2013-04-22 133 views
0

我是OpenXML的新手。我的概念並不完全清楚。 我使用下面的代碼 -如何將Excel模板複製到同一Excel中的另一張工作表?

Package package = Package.Open(newFile.FullName, FileMode.Open, FileAccess.ReadWrite); 
      excelDoc = SpreadsheetDocument.Open(package); 
      WorkbookPart wbPart = excelDoc.WorkbookPart; 
      Sheet templateSheet = wbPart.Workbook.Descendants<Sheet>().Where((s) => s.Name == "Sheet1").FirstOrDefault(); 
      for (int i = 0; i < (int)(obj.Count/4); i++) 
      { 
       WorkbookPart workBookpart = excelDoc.WorkbookPart; 
       Workbook workbook = workBookpart.Workbook; 
       Sheets sheets = workbook.Sheets; 
       WorksheetPart workSheetPart = excelDoc.WorkbookPart.AddNewPart<WorksheetPart>("workSheet" + (i+2)); 
       Worksheet worksheet = new Worksheet(); 
       SheetData sheetdata = new SheetData(); 
       worksheet.Append(sheetdata); 
       workSheetPart.Worksheet = worksheet; 
       sheets.Append(templateSheet.CloneNode(true)); 
      } 
      for (int i = 0; i < (int)(obj.Count/4); i++) 
      { 
       uint sheetId = 1; 
       if (excelDoc.WorkbookPart.Workbook.Sheets.Elements<Sheet>().Count() > 0) 
       { 
        sheetId = excelDoc.WorkbookPart.Workbook.Sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1; 
       } 
       Sheet temp = wbPart.Workbook.Descendants<Sheet>().Skip(i + 1).Take(1).FirstOrDefault(); 
       temp.Name = "Sheet" + (i + 2); 
       temp.Id = "workSheet" + (i + 2); 
       temp.SheetId = sheetId; 
      } 

此代碼創建表,但模板是不存在的,其含量爲「工作表Sheet1」。我應該怎麼做?請建議。

回答

0

現在判斷你的問題是你正在複製Sheet,它爲你提供模板的元數據,但不復制任何相關聯的WorksheetPart對象,其中包含實際內容的片。爲此,您需要this MSDN Blogs post by Brian Jones中的部分內容,特別是他將工作表及其所有部件複製到新工作簿的部分。我可以提供如何在必要時執行此操作的示例。

相關問題