通过OpenXML SDK获取一张excel的表(工作部分)

Sae*_*eid 2 c# excel openxml openxml-sdk c#-4.0

我在一张excel文件中有3个表,我使用OpenXML SDK来读取Excel文件,如下所示:

SpreadSheetDocument document = SpreadSheetDDocument.open(/*read it*/);
foreach(Sheet sheet in document.WorkbookPart.Workbook.Sheets)
{
   //I need each table or work part of sheet here
}
Run Code Online (Sandbox Code Playgroud)

所以当你看到我可以获得每张Excel时,但是如何在每张表中获得工作部分,比如我可以在这些表上迭代的3个表,是否有人知道这一点?有什么建议吗?

Vin*_*Tan 6

这有帮助吗?

// true for editable
using (SpreadsheetDocument xl = SpreadsheetDocument.Open("yourfile.xlsx", true))
{
    foreach (WorksheetPart wsp in xl.WorkbookPart.WorksheetParts)
    {
        foreach (TableDefinitionPart tdp in wsp.TableDefinitionParts)
        {
            // for example
            // tdp.Table.AutoFilter = new AutoFilter() { Reference = "B2:D3" };
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,实际的单元格数据不在Table对象中,而是在SheetData中(在WorksheetPart的Worksheet下).你知道吗

  • 假设从 Table 对象中,您知道范围是 B2:D3。然后您必须从 SheetData 遍历单元格 B2 到 D3 以获取单元格值。这可能很乏味。 (2认同)