打开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);

打开XML SDK写入Double值到Excel单元格

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));