C# 从 Excel 文件读取数据的结果是 ###
本文关键字:结果是 数据 读取 Excel 文件 | 更新日期: 2023-09-27 18:32:07
我用这段代码从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 中,当我单击单元格时,我可以在顶部的行中看到正确的值,但在我的程序中,我得到的是 ### 作为值而不是正确的数字。
这里有什么建议吗?
尝试使用 Range.Value
属性而不是 Text
。
所以而不是
(range.Cells[rCnt, cCnt] as Range).Text;
你会写
(range.Cells[rCnt, cCnt] as Range).Value;
我见过许多使用属性 Value OR Value2 读取范围的示例。
你能试试这个吗?
data[rCnt - 1, cCnt - 1] = (string)(range.Cells[rCnt, cCnt] as Range).Value.ToString();
Value2 属性类似于 Value,但不能很好地转换日期列,因此,如果 Excel 文件中有日期列,则最好使用 Value。有关值和值之间差异的文章,请参阅此处
使用 (
string) (range.单元格[rCnt, cCnt] 作为范围)。值作为值将返回单元格的实际值。文本将返回您在电子表格上实际看到的内容