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