使用ClosedXML读取Excel

3
使用ClosedXML读取整个Excel文件并返回List<List<object>>,最有效的方法是什么?
这种方式并不能给我数据,我得到的是空列表。
        var wb = new XLWorkbook(finalFilePath);
        var ws = wb.Worksheets.First();
        var range = ws.RangeUsed();
        var colCount = range.ColumnCount();
        var rowCount = range.RowCount();

        var i = 1;
        var j = 1;
        List<List<object>> data = new List<List<object>>();
        while (i < rowCount + 1)
        {
            List<object> row = new List<object>();
            while (j < colCount + 1)
            {
                row.Add(ws.Cell(i, j).Value);
                j++;
            }
            data.Add(row);
            i++;
        }

1
首先找出为什么列表为空。例如,列和行计数是否为0,或者返回的单元格值是否为空? - Francois Botha
@FrancoisBotha 不是我正在查看的文档的使用范围为A1:B19或类似的东西。我不确定,但也许该范围中的前几行为空单元格,这使得我的代码无法继续执行? - konrad
1个回答

4
这个可以完成任务:
Dictionary<Tuple<int, int>, object> data = new Dictionary<Tuple<int, int>, object>();
using (XLWorkbook wb = new XLWorkbook(filePath))
{
    var ws = wb.Worksheets.First();
    var range = ws.RangeUsed();

    for (int i = 1; i < range.RowCount() + 1; i++)
    {
        for (int j = 1; j < range.ColumnCount() + 1; j++)
        {
            data.Add(new Tuple<int, int>(i,j), ws.Cell(i,j).Value);
        }
    }
}

Mark it as the answer. - Francois Botha

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