2011-12-09 21 views
2

open xmlのスプレッドシートを作成しようとしています。しかし、作成されたExcelファイルを開いている間はいつも、エラーが返されます。 "Excelは読み込み不能なコンテンツをtest1.xlsxに見つけました。復旧したいのですが、どうしてこのエラーが起きるのですか?私が使用した以下のサンプルコードでは。それのために。OPEN XMLでスプレッドシート文書を作成してTABLEを追加するには

  using (SpreadsheetDocument spreadsheetdocument = SpreadsheetDocument.Create(@"c://test.xlsx", SpreadsheetDocumentType.Workbook)) 
     { 
      // add a workbookpart to the document. 
      WorkbookPart workbookpart = spreadsheetdocument.AddWorkbookPart(); 
      workbookpart.Workbook = new Workbook(); 

      // add a worksheetpart to the workbookpart. 
      WorksheetPart worksheetpart = workbookpart.AddNewPart<WorksheetPart>(); 
      worksheetpart.Worksheet = new Worksheet(new SheetData()); 

      // add sheets to the workbook. 
      Sheets sheets = spreadsheetdocument.WorkbookPart.Workbook. 
       AppendChild<Sheets>(new Sheets()); 

      // append a new worksheet and associate it with the workbook. 
      Sheet sheet = new Sheet() 
      { 
       Id = spreadsheetdocument.WorkbookPart. 
        GetIdOfPart(worksheetpart), 
       SheetId = 1, 
       Name = "mysheet" 
      }; 
      sheets.Append(sheet); 

      TableDefinitionPart tableDefinitionPart = worksheetpart.AddNewPart<TableDefinitionPart>("rId1"); 

      GenerateTablePartContent(ref tableDefinitionPart); 

      TableParts tableParts1 = new TableParts() { Count = (UInt32Value)2U }; 
      TablePart tablePart1 = new TablePart() { Id = "rId1" }; 
      tableParts1.Append(tablePart1); 
      worksheetpart.Worksheet.Append(tableParts1); 
      spreadsheetdocument.Close(); 
} 
//Added spaces to get the code in one block 
private void GenerateTablePartContent(TableDefinitionPart part) 
    { 
     Table table1 = new Table() { Id = (UInt32Value)1U, Name = "Table1", DisplayName = "Table1", Reference = "A1:C3", TotalsRowShown = false }; 
     AutoFilter autoFilter1 = new AutoFilter() { Reference = "A1:C3" }; 

     TableColumns tableColumns1 = new TableColumns() { Count = (UInt32Value)3U }; 
     TableColumn tableColumn1 = new TableColumn() { Id = (UInt32Value)1U, Name = "Column1" }; 
     TableColumn tableColumn2 = new TableColumn() { Id = (UInt32Value)2U, Name = "Column2" }; 
     TableColumn tableColumn3 = new TableColumn() { Id = (UInt32Value)3U, Name = "Column3" }; 

     tableColumns1.Append(tableColumn1); 
     tableColumns1.Append(tableColumn2); 
     tableColumns1.Append(tableColumn3); 
     TableStyleInfo tableStyleInfo1 = new TableStyleInfo() { Name = "TableStyleMedium2", ShowFirstColumn = false, ShowLastColumn = false, ShowRowStripes = true, ShowColumnStripes = false }; 

     table1.Append(autoFilter1); 
     table1.Append(tableColumns1); 
     table1.Append(tableStyleInfo1); 

     part.Table = table1; 
    } 

答えて

1

使用オープンXML SDK生産性向上ツールを作成し、通常の方法を使用してExcelファイルを作成し、そこにも同じデータを入れて、あなたが作成しているファイルとそのファイルを比較します私も同じ問題に直面しており、そのツールを使用して変更を修正しようとしています....

あなたがこの問題を解決した場合は、どうすればいいか教えてくださいそれをする。

関連する問題