【问题标题】:How can I insert a double as a number in Excel? [duplicate]如何在 Excel 中插入双精度数? [复制]
【发布时间】:2015-10-29 19:30:50
【问题描述】:

尝试以下方法:

          string cellDataStr = row[col.ColumnName].ToString();
          double cellDataD = 0;

          Cell cell = new Cell();

          if (double.TryParse(cellDataStr.Replace(',','.'), NumberStyles.Any, new NumberFormatInfo(), out cellDataD))
          {
            // data was parsed as double;
            cell.DataType = new EnumValue<CellValues>(CellValues.Number);
            cell.CellValue = new CellValue(cellDataStr);
          }
          else
          {
            // data was not parsed as double
            cell.DataType = CellValues.String;
            cell.CellValue = new CellValue(cellDataStr);
          }

cellDataStr 可能是 353126,00。逗号是小数分隔符。

当我打开这个生成的文件时,Excel 会显示“我们在某些内容上遇到了问题,您希望我们尽可能多地恢复吗?”。

1、3254 和 8 等所有整数都可以。但是每个带小数点的数字,例如 15592,52、0,0600000、-15000,00 在单元格中都有这个绿色箭头,告诉我单元格中的数字存储为文本或以撇号开头。

如何将双精度值正确插入单元格?

【问题讨论】:

  • 您是否尝试使用 Text 属性而不是 Value?

标签: c# openxml


【解决方案1】:

将双精度存储为文本,然后使用:

range.NumberFormat = "0.0"; //根据你的要求

【讨论】:

  • 如何将数字作为文本输入并告诉excel它是内联文本帮助excel将数字存储为文本?
【解决方案2】:

可能与您执行字符串替换以更改小数点分隔符的原因相同。生成的电子表格标有线程的当前文化,这显然与您的数据不匹配。

您正在将数字 353126,00 写入工作表,但无法使用当前区域性对其进行解析,因此它不是数字。修复它(内容问题) Excel 将单元格类型更改为文本。现在 Excel 已打开文件,视图是特定于文化的,它可以看到它是一个数字,因此它会有效地提示您撤消它刚刚所做的更改。除了它将使用当前文化存储它 所以要修复...

改变:

        cell.CellValue = new CellValue(cellDataStr);

        cell.CellValue = new CellValue(cellDataD.ToString());

【讨论】:

  • 我试过这个没有运气:(
猜你喜欢
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 2016-04-30
  • 2017-11-15
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
相关资源
最近更新 更多