c# - 打开 XML SDK 将 double 值写入 Excel 单元格

标签 c# .net excel openxml

我正在将值从 SQL 数据库传输到 ExcelSheet。我可以编写字符串和整数,没有问题,但是当我编写 double 时,Excel 需要修复文档。它说数字被格式化为文本。

我使用这个代码:

double val = Math.Round(reader.GetDouble(3),2);
cell.CellValue= new CellValue(Convert.ToString(val));
cell.DataType = new EnumValue<CellValues>(CellValues.Number);

最佳答案

使用 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());
            }

有更好的解决方案吗?

关于c# - 打开 XML SDK 将 double 值写入 Excel 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39075693/

相关文章:

C# JSON 解析

c# - 查找从给定 INamedTypeSymbol 继承的类型

.net - 测试终结器和 IDisposable

.net - 发送对 javascript XMLHTTPRequest 'get' 请求的响应时使用的字符集

c# - 使用 QueryOver 返回 HasMany 关联集合计数为 0 的实体

C# 为空或零

vba - 超过 255 个字符的数组公式

excel - 使用 VBA 在 Excel 中创建数据透视表时出现类型不匹配错误

c# - 正则表达式在 .NET 中不起作用

regex - 使用正则表达式对值进行分组 regex