打开xml读取不正确的数据

时间:2015-08-20 18:12:49

标签: c# excel openxml

使用open xml读取Excel文件时遇到问题 - 我希望我的程序读取所有行并显示数据。在遍历行的foreach循环中,程序获得随机行数,这大于excel中写入某些内容的实际行数,并导致NullReferenceException。不应该是foreach"知道"何时停止?

        var sharedStringTable = myWorkbook.WorkbookPart.SharedStringTablePart;
        var definedNames = myWorkbook.WorkbookPart.Workbook.DefinedNames;

        var worksheetPart = myWorkbook.GetWorksheetPartByName("Sheet1");

        SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
        int lala = 1;

        var rows = worksheetPart.Worksheet.Descendants<Row>();
        foreach (Row r in rows)
        {
            var val1 = worksheetPart.ReadCellContent(definedNames, sharedStringTable, string.Format("B{0}", lala));
            lala++;
        }

1 个答案:

答案 0 :(得分:0)

您在循环中没有引用r。 foreach不应仅仅用作计数器,这就是为什么要在foreach (Row r in rows)中声明新变量的原因。

基本上,你循环遍历rows但是以任何方式调用/引用不属于r的项(在当前迭代中循环的行)。 / p>