2017-09-26 249 views
0

我对ClosedXML有类似的问题,就像这个one但有点不同。 SetDataType方法不起作用。 例如,我有价值 string dps = "3.12.02" 这不是一个日期或数字,它是有效的文本。ClosedXML - 为单元格设置数据类型不起作用

当我这样做: ws.Cell(1, 1).Value = dps; ws.Cell(1, 1).SetDataType(XLCellValues.Text);

并保存文件,然后在Excel中打开它,它仍然将其转换为一些rubish像37593 我尝试过把它和设定值后,没有变化。

有人可以帮我吗?

回答

1

.Value方法尝试猜测您正在设置的值的类型。在你的情况下,该值是一个有效的(即可解析的)DateTime,它们在内部存储为数字。

要明确设置的值,没有猜测,使用方法:

string dps = "3.12.02"; 
ws.Cell(1, 1).SetValue(dps); 
+0

谢谢!这两种情况都很完美,但由于我的名声低,我无法向上推荐:(所以至少我想以这种方式感谢你:) – Lucas

+0

快乐。我还更新了IXCell.Value的doctext,希望更清楚地表明,如果使用此方法,数据类型将被猜测。 https://github.com/ClosedXML/ClosedXML/commit/93f42089f952c4d71912a0749c770035c4a494a4 –

0

虽然我不能告诉你为什么它不起作用,但一个简单的方法是在字符串前面加一个撇号(')。这迫使Excel将所有后面的内容视为文本。

string dps = "'3.12.02"; 
ws.Cell(1, 1).Value = dps; 
+0

谢谢!!这两种情况都很完美,但由于我的名声低,我无法向上推荐:(所以至少我想以这种方式感谢你:) – Lucas

相关问题