我有XLSX文件,在Excel中查看时有多张图纸。 但是,在excel中查看时,使用下面代码段的某些文件实际上将WorksheetPart.First作为第2或第3个工作表。 我认为这是因为这些工作表在某一点重新安排在excel中。
问:如何使用OpenXml来阅读"视图"命令MS-Excel显示它们,而不是通过OpenXml可能出现故障? 注意:我无法使用工作表名称作为解决方法。
using (var document = SpreadsheetDocument.Open(".\test.xlsx", false))
{
var workbookPart = document.WorkbookPart;
var worksheetPart = workbookPart.WorksheetParts.First();
// worksheetPart is not always the first worksheet that Excel shows
}
答案 0 :(得分:3)
我猜工作表部分不一定是有序的。应该按顺序排列的是Workbook.Sheets属性(您也可以在此处按名称搜索)。您可以通过它的ID see here将工作表与其工作表部分关联起来。
答案 1 :(得分:0)
我希望,这样您将获得正确的工作表索引,用于工作表索引。
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Linq;
// ----------------------------------------------------------------------
using (SpreadsheetDocument xl = SpreadsheetDocument.Open(fileName, false))
{
int sheetNo = 0; // Index 0 => sheet 1
WorkbookPart wbPart = xl.WorkbookPart;
Sheet sheet = wbPart.Workbook
.Descendants<Sheet>()
.ElementAt(sheetNo);
WorksheetPart wsPart = (WorksheetPart)(wbPart.GetPartById(sheet.Id));
}