2013-03-21 63 views
1

我想使用Open XML Format SDK 2.0創建基於模板的Excel文檔。 我按照本教程Creating Documents by Using the Open XML Format SDK 2.0 CT。 我的問題是我放入文檔的行和單元格沒有保存。當我打開文檔時,它看起來就像模板一樣。使用Open XML Format SDK 2.0創建時不保存文檔CTP

當我運行我的代碼時沒有拋出異常。我想我必須強制將更改保存在文檔中,但我無法弄清楚。

下面是我的一些代碼:

public static void GenerateExcelReportToDisk() 
    { 
     var factory = new Factory(); 
     var generated = "result.xlsx"; 
     var newFile = Util.GetReportTargetPath() + generated; 
     var templateFile = Util.GetReportTemplatePath() + @"template.xlsx"; 
     File.Copy(templateFile, newFile, true); 

     using (var myWorkbook = SpreadsheetDocument.Open(newFile, true)) 
     { 
      var workbookPart = myWorkbook.WorkbookPart; 
      var worksheetPart = workbookPart.WorksheetParts.First(); 
      var sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>(); 

      //Get data 
      var data = factory.GetAllFixtures().Take(20); 
      int rowIndex = 3; 

      foreach (var fixture in data) 
      { 
       var pcRate = fixture.PCRate; 
       var account = fixture.Charter != null ? fixture.Charter.Shortname : null; 
       var region = fixture.Region != null ? fixture.Region.GroupName : null; 

       //CreateContentRow is exactly like the tutorial linked above. 
       var row = CreateContetRow(rowIndex, region, pcRate, account); 
       rowIndex++; 
       sheetData.AppendChild(row); 
      } 
      //Tried to add myWorkbook.WorkbookPart.Workbook.Save(); here, but it doesn't do anything 
      myWorkbook.Close(); 
     } 

回答

2

好,我是自己一小會兒後,想出解決辦法。 這裏發佈答案的情況下,它會幫助一個人(包括我自己):

在上面myWorkbook.Close();行添加worksheetPart.Worksheet.Save();

就這麼簡單......