2017-02-09 107 views
0

最近我發現自己需要將一個大型C#數據表粘貼到Excel中,並且很高興看到SimpleOOXML(https://simpleooxml.codeplex.com)擴展的WorksheetWriter.PasteDataTable()函數,它正是如此。使用OpenXML格式化Excel 2013範圍

不幸的是,它並沒有自動地將粘貼的DataTable轉換爲自動列寬和過濾功能的「Format as Table」,正如人們所期望的那樣,而是隻允許我指定單獨的樣式(例如邊框,背景顏色等)。

如果有人知道如何使用SimpleOOXML(我在他們的論壇中找不到相關內容),那將是了不起的,但如果這不可能,我想知道是否可以使用傳統的OpenXML來完成?

編輯

爲了澄清,我檢查的OpenXML的MSDN文檔,但無法找到一個方法來做到以下幾點:

編程使用的OpenXML格式化一個特定的範圍(G7:I9 )作爲表,使用樣式「Table Style Light 9」,並保留現有的標題。

Excel Format As Table

Keep existing Headers

+0

是的,它可能是,給它一個與去:HTTPS ://msdn.microsoft.com/en-us/library/office/bb448854.aspx –

+0

也http://stackoverflow.com/help/mcve –

+0

@傑克米勒感謝您的答覆,我更新了描述,你可以請給它看看? – Themos

回答

1

創建一個虛擬的Excel與表中的簡單數據文件:

enter image description here

打開Excel文件在open xml productivity tool表明,表部分需求待創建:

private void GenerateTableDefinitionPart1Content(TableDefinitionPart tableDefinitionPart1) 
    { 
     Table table1 = new Table(){ Id = (UInt32Value)1U, Name = "Table1", DisplayName = "Table1", Reference = "A1:D2", TotalsRowShown = false }; 
     AutoFilter autoFilter1 = new AutoFilter(){ Reference = "A1:D2" }; 

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

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

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

     tableDefinitionPart1.Table = table1; 
    } 

然後叫主:

  TableDefinitionPart tableDefinitionPart1 = worksheetPart1.AddNewPart<TableDefinitionPart>("rId1"); 
      GenerateTableDefinitionPart1Content(tableDefinitionPart1); 

要選擇適合自己的表合適的款式改變TableStyleInfo Name屬性:

TableStyleInfo tableStyleInfo1 = new TableStyleInfo(){ Name = "TableStyleLight17", ShowFirstColumn = false, ShowLastColumn = false, ShowRowStripes = true, ShowColumnStripes = false };