Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Excel中插入双精度字符作为数字?_C#_Openxml - Fatal编程技术网

C# 如何在Excel中插入双精度字符作为数字?

C# 如何在Excel中插入双精度字符作为数字?,c#,openxml,C#,Openxml,尝试以下操作: string cellDataStr = row[col.ColumnName].ToString(); double cellDataD = 0; Cell cell = new Cell(); if (double.TryParse(cellDataStr.Replace(',','.'), NumberStyles.Any, new NumberFormatInfo(), out cellD

尝试以下操作:

          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);
          }
string cellDataStr=row[col.ColumnName].ToString();
双单元数据d=0;
单元格=新单元格();
if(double.TryParse(cellDataStr.Replace(',',')),NumberStyles.Any,newnumberformatinfo(),out cellDataD))
{
//数据被解析为double;
cell.DataType=新的枚举值(CellValues.Number);
cell.CellValue=新的CellValue(cellDataStr);
}
其他的
{
//数据未分析为双精度
cell.DataType=CellValues.String;
cell.CellValue=新的CellValue(cellDataStr);
}
其中
cellDataStr
可能是353126,00。逗号是十进制分隔符

当我打开这个生成的文件时,Excel声明“我们发现了一些内容的问题,您希望我们尽量恢复吗?”

所有整数,如1、3254和8都可以。但是每一个带小数点的数字,比如15592,5200600000,-15000,00,在单元格中都有一个绿色箭头,告诉我单元格中的数字是以文本形式存储的,或者是以撇号进行的


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

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


range.NumberFormat=“0.0”//根据您的要求

可能与您执行字符串替换以更改十进制分隔符的原因相同。生成的电子表格标记了线程的当前区域性,该区域性显然与您的数据不匹配

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

更改:

        cell.CellValue = new CellValue(cellDataStr);


您是否尝试使用Text属性而不是Value?以文本形式输入数字并告诉excel它是内联文本如何帮助excel不将数字存储为文本?我尝试此操作时运气不佳:(
        cell.CellValue = new CellValue(cellDataD.ToString());