Excel单元格值显示不正确,Excel.Interop和C#
问题描述:
我通过Excel.Interop和C#动态地将13位数值添加到Excel单元格。但是,该值显示为7,21119E+12
而不是7211192800080
的行。如果你点击单元格,那么显示是正确的。Excel单元格值显示不正确,Excel.Interop和C#
//_ReportData is a DataTable with a single item
for (int i = 0; i < _ReportData[0].Rows.Count; i++)
{
for (int j = 0; j < _ReportData[0].Columns.Count; j++)
{
excelCellRange_data = ((Worksheet)excelWorksheet_data).Cells;
var cellValueRange = ((Range)excelCellRange_data)[i, j + 1];
if (i == 0)
((Range)cellValueRange).Value2 = _ReportData[0].Columns[j].ToString(); //This is where the columns are set
else
((Range)cellValueRange).Value2 = _ReportData[0].Rows[i][j].ToString(); //This is where the values are set
}
}
请帮忙吗?
答
这是一个Excel-“问题”。如果您直接在单元格中输入号码,请按回车键,同样的问题会出现。如果您先将单元格格式化为数字,则会显示正确。
((Range)cellValueRange).NumberFormat = "0";
答
您应该插入值而不使用ToString()
方法。 Excel应该从插入的值类型自动应用格式。
+0
奇怪,即使我删除了ToString()方法,问题仍然存在 –
不幸的是,这并没有解决这个问题。该值作为字符串从数据库传入,所以我做了一个'long.tryparse()'来确保我正在处理一个数字,但仍然不满意。 –
那么,我试了一下,它的工作正确与数字最多15位数(999999999999999)。如果数字较大,Excel无法正确处理。例如。一个包含17位数字99999999999999999的数字将显示为99999999999999900 ...不知道为什么......无论如何,如果您不希望Excel使用此数字计算,则可以使用领先的apostroph'((范围) cellValueRange).Value2 =“'”+ _ReportData [0] .Rows [i] [j] .ToString();' – Wudge
不知道我做了什么不同,但它似乎已经整理出来了。我查询实际的生产数据,没有问题,而不是开发环境数据......虽然 –