2016-02-05 55 views
0

有誰知道如何通過C#將數據複製到Excel範圍內,而不會丟失表格格式?如何將數據複製到Excel範圍格式化爲表格,而不是丟失表格格式

每次我將數據複製到範圍內時,都會丟失之前設置的格式。

private object[,] Get2DArrayData() 
    { 
     var obj = new object[2, 4]; 
     obj[0, 0] = "Header1"; 
     obj[0, 1] = "Header2"; 
     obj[0, 2] = "Header3"; 
     obj[0, 3] = "Header4"; 
     obj[1, 0] = 1; 
     obj[1, 1] = 2; 
     obj[1, 2] = 3; 
     obj[1, 3] = 4; 
     return obj; 
    } 

    private void button1_Click(object sender, RibbonControlEventArgs e) 
    { 
     var worksheet = Globals.ThisAddIn.Application.ActiveSheet; 
     Range range = worksheet.Range["A1:D2"]; 
     Excel.ListObject obj = worksheet.ListObjects.Add(Excel.XlListObjectSourceType.xlSrcRange, range, null, Excel.XlYesNoGuess.xlYes, null); 
     obj.TableStyle = "TableStyleMedium3"; 
     obj.Name = "MyTableNamedRange"; 
     //table style is lost after setting Value2 on the range 
     range.Value2 = Get2DArrayData(); 
    } 

每次我將數組數據粘貼到Value2時,ListObject都會被清除。有沒有辦法不會失去這種格式?在添加到ListObjects屬性之前設置Value2屬性是不可能的。

+0

我認爲你需要在這裏一點點擴大你的代碼。 – Takarii

+0

再次,太少的代碼,看看發生了什麼事。你需要提供足夠的信息,以便我們看到發生了什麼。我們不知道'Get2DArrayData()'做了什麼,或者Value2在你的range對象中。請查看http://stackoverflow.com/help/mcve然後更新您的問題多一點,所以我們可以幫助 – Takarii

+0

Get2DArrayData在這種情況下是不重要的。它只是返回一個多維對象數組(即。object [,])並將其賦值給範圍對象上的Value2。 – BigBytes

回答

0

如果你想使用數據填充的ListObject,你應該設置的ListObject的HeaderRowRange和DataBodyRange到內容數組:

obj.HeaderRowRange.Value2 = /* Your array with table headers goes here */ 
obj.DataBodyRange.Value2 = /* Your array with table data goes here */ 
相關問題