c#在循环中动态创建openxml对象

时间:2016-12-17 18:55:26

标签: c# excel openxml

我正在创建一个包含多个工作表的openxml Excel工作簿。每个工作表与下一个工作表略有不同,但每个工作表都包含唯一的数据。创建的页数总是不同的,因为它取决于不断变化的因素(可能是7张或15张等)。我正在尝试通过迭代foreach循环来学习创建这些工作表的优雅方法。

我通过创建字典来获得建议,但考虑到这涉及openxml类,我不知道如何为我的场景实现这一点。

奇怪的是,以下代码在LibreOffice Calc中完美运行,但Excel会抛出错误。我需要它来使用Excel。

foreach (var ExcelDatum in excelData)
{
   WorksheetPart wspBuildSheets = workbookPart.AddNewPart<WorksheetPart>();
   Worksheet wsBuildSheet = new Worksheet();
   SheetData buildSheetData = new SheetData();
   wsBuildSheet.AppendChild(buildSheetData);
   wspBuildSheets.Worksheet = wsBuildSheet;
   wspBuildSheets.Worksheet.Save();
   Sheet buildSheet = new Sheet();
   buildSheet.Name = "";
   buildSheet.SheetId = 2;
   buildSheet.Id = workbookPart.GetIdOfPart(wspBuildSheets);
   sheets.Append(buildSheet);


   Columns buildColumns = new Columns(
      new Column
      {
         Min = 1,
         Max = 1,
         Width = 100,
         CustomWidth = true
       });
   wsBuildSheet.AppendChild(buildColumns);

   row = new Row();
   row.Append(
       ConstructCell("testing " + ExcelDatum.HddSn, CellValues.String, 0));
   buildSheetData.AppendChild(row);

   SheetViews sheetViews = new SheetViews();
   SheetView sheetView = new SheetView();
   sheetView.ShowGridLines = new BooleanValue(false);
   sheetView.WorkbookViewId = 0;
   sheetViews.Append(sheetView);
   wsBuildSheet.Append(sheetViews);
}

非常感谢任何帮助!!

Initial Error

Then after clicking "Yes"

0 个答案:

没有答案