ClosedXML - 设置单元格的数据类型不起作用
ClosedXML - Setting data type for cell does not work
我对 ClosedXML 有类似的问题,像这样 但有点不同。
SetDataType 方法不起作用。
例如,我有价值
string dps = "3.12.02"
这不是日期也不是数字,它是有效文本。
当我这样做时:
ws.Cell(1, 1).Value = dps;
ws.Cell(1, 1).SetDataType(XLCellValues.Text);
并保存文件,然后在 Excel 中打开它,它仍然会把它转换成像 37593
这样的垃圾
我试着把它放在设置值前后,没有变化。
有人可以帮我吗?
虽然我不能告诉您为什么它不起作用,但一种简单的方法是在您的字符串前加上撇号 ('
)。这会强制 Excel 将后面的所有内容都视为文本。
string dps = "'3.12.02";
ws.Cell(1, 1).Value = dps;
.Value
方法尝试猜测您正在设置的值的类型。在您的情况下,该值是有效的(即可解析的)DateTime
,在内部存储为数字。
要明确设置一个值,而不是猜测,请使用:
string dps = "3.12.02";
ws.Cell(1, 1).SetValue(dps);
我知道您正在尝试设置文本值,但我发现 LibreOffice 创建的 Excel 文件似乎以某种方式扰乱了 ClosedXMLs 将列设置为 DateTime 数据类型的能力。
// What I tried without success.
cell.Clear(XLClearOptions.All);
cell.SetValue<DateTime>((DateTime)cellValue);
cell.SetDataType(XLDataType.DateTime);
在 Excel 中重新创建电子表格之前,我所做的一切都无法解决问题。
// This worked just fine on a proper Excel file
cell.SetValue((DateTime)cellValue);
当我用 LibreOffice 打开并保存电子表格后,正确设置列类型的功能就消失了。
我对 ClosedXML 有类似的问题,像这样 string dps = "3.12.02"
这不是日期也不是数字,它是有效文本。
当我这样做时:
ws.Cell(1, 1).Value = dps;
ws.Cell(1, 1).SetDataType(XLCellValues.Text);
并保存文件,然后在 Excel 中打开它,它仍然会把它转换成像 37593
这样的垃圾
我试着把它放在设置值前后,没有变化。
有人可以帮我吗?
虽然我不能告诉您为什么它不起作用,但一种简单的方法是在您的字符串前加上撇号 ('
)。这会强制 Excel 将后面的所有内容都视为文本。
string dps = "'3.12.02";
ws.Cell(1, 1).Value = dps;
.Value
方法尝试猜测您正在设置的值的类型。在您的情况下,该值是有效的(即可解析的)DateTime
,在内部存储为数字。
要明确设置一个值,而不是猜测,请使用:
string dps = "3.12.02";
ws.Cell(1, 1).SetValue(dps);
我知道您正在尝试设置文本值,但我发现 LibreOffice 创建的 Excel 文件似乎以某种方式扰乱了 ClosedXMLs 将列设置为 DateTime 数据类型的能力。
// What I tried without success.
cell.Clear(XLClearOptions.All);
cell.SetValue<DateTime>((DateTime)cellValue);
cell.SetDataType(XLDataType.DateTime);
在 Excel 中重新创建电子表格之前,我所做的一切都无法解决问题。
// This worked just fine on a proper Excel file
cell.SetValue((DateTime)cellValue);
当我用 LibreOffice 打开并保存电子表格后,正确设置列类型的功能就消失了。