2013-04-22 2 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; 
      } 

이 코드는 시트를 생성되지만 템플릿은 "시트 1"에 존재하는이없는 - 나는 다음과 같은 코드를 사용하고 있습니다. 어떻게해야합니까? 제발 제안 해주세요.

답변

0

현재 가지고있는 것으로 판단하면 템플릿 시트의 메타 데이터를 제공하는 Sheet을 복사하고 있지만 실제로 연결된 템플릿의 실제 내용을 포함하는 연결된 WorksheetPart 개체는 복사하지 않습니다. 시트. 이를 수행하려면 this MSDN Blogs post by Brian Jones에있는 부분, 특히 시트를 복사하는 부분과 모든 부분을 새 통합 문서에 넣어야합니다. 필자는 필요한 경우 어떻게 할 것인지 예를 제시 할 수 있습니다.

관련 문제