如何使用ClosedXML从Excel文件中读取单元格值

3
        string TablePath = Storage.ProjectPath + "\\Tables\\";
        string ObjectRepPath = TablePath + "ObjectRepository.xlsx";

        string locType = " ";
        string locParm = " ";

        var workbook  = new XLWorkbook(ObjectRepPath);
        var ws1       = workbook.Worksheet(1).RangeUsed().RowsUsed().Skip(1);
        var totalRows = ws1.Count();
        var row       = ws1.Row;

        for (int rCnt = 1; rCnt <= totalRows; rCnt++)
        {
            var objPage    = ws1.Cell(rCnt, 0).Value;
            var objElement = ws1.Cell(rCnt, 1).Value;


            if (objPage == page && objElement == element)
            {
                locType = ws1.Cell(rCnt, 2);
                locParm = ws1.Cell(rCnt, 3);
            }
        }

我正在尝试使用ClosedXML从Excel文件中读取数据。我找到的所有参考资料都说可以使用Worksheet.Cell(r,c),但是它没有包含.Cell的定义,也没有.Row的定义。我已经尝试了在ClosedXML下包含所有using语句,但这也不起作用。我错过了什么吗?
错误信息为:“IEnumerable[IXLRangeRow]”不包含“Cell”的定义,也没有接受类型为“IEnumerable[IXLRangeRow]”的第一个参数的扩展方法“Cell”(是否缺少using指令或程序集引用?)
ws1.Cell和ws1.Row都会出现此错误。
应该可以支持此操作的参考资料有: - 使用ClosedXML从Excel文件中读取数据 - https://github.com/closedxml/closedxml/wiki/Cell-Values

你是否遇到了特定的(编译器)错误?如果是,请在问题中提供错误信息。如果没有,请更具体地描述你的问题,因为目前非常不清楚。谢谢! - cramopy
ws1是一个由IXLRangeRow组成的序列,该序列没有Row属性。同样地,序列中的每个行都有Cell,但序列本身没有。 - Crowcoder
好的,你是说因为我在定义工作表时指定了.RangeUsed().RowsUsed,所以出现了这个问题?在参考资料中显示...var ws = workbook.Worksheets.Add("单元格数值"); var cellString = ws.Cell(6, 2); - HeadlyvonNoggin
@HeadlyvonNoggin 在参考示例中,ws 是一个工作表,而你的 ws1 不是一个工作表。我不太了解该 API,但你所获取的是一个 IEnumerable[IXLRangeRow] - Crowcoder
@Crowcoder 好的。我觉得这已经给了我足够的信息来进一步完善我对这个主题的研究。谢谢你。 - HeadlyvonNoggin
1个回答

6

好的,找到了一个解决方案。感谢@Crowcoder的指导...

        var workbook = new XLWorkbook(ObjectRepPath);
        var rows     = workbook.Worksheet(1).RangeUsed().RowsUsed().Skip(1);

        foreach (var row in rows)
        {
            var rowNumber  = row.RowNumber();

                objPage    = row.Cell(1).GetString();
                objElement = row.Cell(2).GetString();

            if (objPage == page && objElement == element)
            {
                locType = row.Cell(3).GetString();
                locParm = row.Cell(4).GetString();
            }
        }

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