2012-09-24 34 views
1

我正在製作一個加載項,我試圖格式化我的加載項生成的輸出,使用格式作爲表格 - Excel提供的樣式。Excel VSTO 2007中的表格格式(TableStyles),錯誤:一個表格不能與另一個表格重疊

您在功能區上的「主頁選項卡」 - >「格式化爲表格」按鈕上獲得的一個。

我使用下面的代碼:

SourceRange.Worksheet.ListObjects.Add(XlListObjectSourceType.xlSrcRange, 
SourceRange, System.Type.Missing, xlYesNo, System.Type.Missing).Name = 
TableName; 

SourceRange.Select(); 

SourceRange.Worksheet.ListObjects[TableName].TableStyle = TableStyleName; 

TableStyleName是任何風格的名稱,比如TableStyleMedium17,你得到它,如果你只是徘徊在Excel中一個特定的風格。

我的問題是,即使我將SourceRange保留爲10列,直到最後的所有列都被選中並被視爲一個表格。 因此,我在它旁邊填充的表也被視爲生成的第一個表的一部分。因爲兩個表都具有相同的列名,Excel自動更改所有以下生成的表中的列名。 另外,因爲我在一個循環中產生的生成表2個表後,我得到的錯誤:

A table cannot overlap another table.

PS:我清楚地提SourceRange爲:

var startCell = (Range)worksheet.Cells[startRow, startCol]; 
var endCell = (Range)worksheet.Cells[endRow, endCol]; 
var SourceRange = worksheet.get_Range(startCell, endCell); 

請建議出路。

回答

0

所以,我在發佈這個帖子後的一個星期裏解決了這個問題,對不起沒有更新的東西。
這實際上是一個內置的Excel功能。 你不能幫助它,Excel應用程序將繼續這樣做。
因此,最終在c#中編寫了我自己的表格樣式,並將其應用於以下提到的excel範圍:SourceRange。它就像寫CSS一樣。
如果您有興趣瞭解關於此問題的評論的詳細信息,或者您可以通過我的個人資料中的電子郵件與我聯繫。

1

我們能夠弄清楚發生了什麼事在我們爲這個目的:

xlWorkbook.Worksheets.Add([before],[after], Type.Missing, Type.Missing) 電話,我們不得不翻轉因爲我們希望張向右移動後,沒有離開之前再通過增加sheetcount來訪問 xlWorkbook.Worksheets[sheetCount] ,但是正在生成多張紙張。

另一種方式是創建工作表以訪問SourceRange.Worksheet.ListObjects[TableName].TableStyle = TableStyleName調用中的以前分配的表格格式。

相關問題