C#从excel文件读取数据结果在###

我用这个代码从Excel文件中读取数据

Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; Microsoft.Office.Interop.Excel.Range range; int rCnt = 0; int cCnt = 0; string[,] data; xlWorkSheet = (Worksheet)wb.Worksheets.get_Item(sheetId); range = xlWorkSheet.UsedRange; data = new string[range.Rows.Count, range.Columns.Count]; for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) { for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) { data[rCnt - 1, cCnt - 1] = (string) (range.Cells[rCnt, cCnt] as Range).Text; } } 

现在我正在运行excel中的值显示为###的单元格,因为列空间不足以显示数字。 在excel当然,我可以看到正确的价值,当我点击单元格,但在我的程序,我得到###作为价值,而不是正确的数字在顶部的行。

有什么build议吗?

尝试使用Range.Value属性而不是Text

所以,而不是

 (range.Cells[rCnt, cCnt] as Range).Text; 

你会写

 (range.Cells[rCnt, cCnt] as Range).Value; 

我已经看到了很多使用属性值或值2读取范围的例子。
你可以试试吗?

 data[rCnt - 1, cCnt - 1] = (string)(range.Cells[rCnt, cCnt] as Range).Value.ToString(); 

Value2属性与Value类似,但不能很好地转换Date列,因此如果在Excel文件中有date列,最好使用Value。 在这里看到一篇关于价值和价值之间差异的文章2

使用(string)(range.Cells [rCnt,cCnt]作为Range).Value作为Value将返回一个单元格的实际值。 文本将返回您在电子表格中实际看到的内容