ClosedXML – 设置单元格的数据types不起作用

我有类似的问题关于ClosedXML,就像这一个,但有点不同。 SetDataType方法不起作用。 例如,我有值string dps = "3.12.02"这不是一个date或数字,它是有效的文本。

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

并保存该文件,然后打开它在Excel中,它仍然将其转换为一些像37593我试图把它之前和之后设置值,没有改变。

有人可以帮我吗?

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

要明确地设置一个值,不要猜测,使用:

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

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

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