打开XML SDK写入Double值到Excel单元格
本文关键字:值到 Excel 单元格 Double 写入 XML SDK 打开 | 更新日期: 2023-09-27 18:03:19
我正在将值从SQL数据库转移到excel表中。我可以写字符串和整数没有问题,但当我写double Excel需要修复文档。它说数字被格式化为文本。
我使用以下代码:
double val = Math.Round(reader.GetDouble(3),2);
cell.CellValue= new CellValue(Convert.ToString(val));
cell.DataType = new EnumValue<CellValues>(CellValues.Number);
Using CultureInfo。InvariantCulture不能覆盖所有的情况,非常大或非常小的数字以及NaN和+-Inf仍然会触发Excel修复文件。目前我正在使用这个作为一个工作:
bool isNumeric = IsNumeric(value, out double number);
if (isNumeric && ! (double.IsNaN(number) | double.IsInfinity(number) | Math.Abs(number) >1e100))
{
cell.DataType = CellValues.Number;
cell.CellValue = new CellValue(String.Format(CultureInfo.InvariantCulture, "{0:0.####################}", number));
}
else
{
cell.DataType = CellValues.String;
cell.CellValue = new CellValue(value.ToString());
}
有更好的解决方案吗?
请尝试使用:
cell.CellValue = new CellValue(val.ToString(CultureInfo.InvariantCulture));
代替:
cell.CellValue = new CellValue(Convert.ToString(val));