在Excel VSTO 2007中格式化为表(TableStyles),错误:一个表不能重叠另一个表

我正在做一个加载项,我试图格式化我的加载项生成的输出,使用格式作为Excel提供的表格表格样式。

您在“主页选项卡” – >“格式化为表格”button上获得的那个button。

我正在使用以下代码:

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中hover一个特定的样式,你会得到它。

我的问题是,即使我将SourceRange保持为10列,直到结束的所有列都被选中,并被视为一个表。 因为这个表我在它旁边填充也被认为是生成的第一个表的一部分。因为,这两个表具有相同的列名称,Excel会自动更改所有以下生成的表中的列名称。 另外,因为我生成了2个表格之后的一个循环中的表格,所以我得到这个错误:

一个表不能与另一个表重叠。

PS:我明确提到SourceRange为:

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

请提出一条出路。

我们能够弄清楚我们这边正在发生什么:

xlWorkbook.Worksheets.Add([before],[after], Type.Missing, Type.Missing)调用之前,我们不得不翻动前后,因为我们希望表单向右移动,而不是左侧,然后访问xlWorkbook.Worksheets[sheetCount]正在生成xlWorkbook.Worksheets[sheetCount]通过增加sheetcount数量。

拥有它的另一种方式是创build工作表以访问SourceRange.Worksheet.ListObjects[TableName].TableStyle = TableStyleName调用之前分配的表格格式。

所以,我在发帖之后的一个星期就解决了这个问题,对不起没有更新的东西。
这实际上是一个内置的Excelfunction。 你不能帮助,Excel应用程序将继续这样做。
所以,最终在c#中编写我自己的表格样式并将其应用到作为SourceRange提到的excel范围。 就像写CSS一样。
如果你有兴趣知道这个问题本身的评论的细节,或者你可以通过我的个人资料的电子邮件与我联系。