使用C#从Excel文件读取数据导致###。

4
我使用以下代码从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中,当我点击单元格时,顶部一行会显示正确的值,但在我的程序中,我得到的是###而不是正确的数字。

请问有什么建议吗?

3个回答

4

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

因此,可以将以下代码:

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

您将编写以下内容

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

1

我看过很多例子,其中范围是使用属性值或Value2读取的。
你可以试试这个吗?

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

Value2属性类似于Value,但不太适用于日期列的翻译,因此如果您的Excel文件中有日期列,则最好使用Value。在这里查看关于Value和Value2之间差异的文章。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接