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

时间:2012-09-24 14:37:32

标签: c# excel vsto add-in

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

您在'主页标签'上获得的那个 - >功能区上的“格式化为表格”按钮。

我正在使用以下代码:

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个表之后在循环中生成表,所以我得到错误:

  

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

PS:我明确提到SourceRange为:

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

请建议出路。

2 个答案:

答案 0 :(得分:1)

我们能够弄清楚最终发生了什么:

    xlWorkbook.Worksheets.Add([before],[after], Type.Missing, Type.Missing) 打电话,我们不得不前后翻转,因为我们希望床单向右移动,而不是离开然后进入     xlWorkbook.Worksheets[sheetCount] 通过增加工作表数量来生成许多工作表。

另一方面是创建工作表以从SourceRange.Worksheet.ListObjects[TableName].TableStyle = TableStyleName调用访问以前分配的表格格式。

答案 1 :(得分:0)

所以,我在发布这个问题一周后解决了这个问题,抱歉没有在事情发生时更新 这实际上是一个内置的excel功能。 你不能帮助它,excel应用程序将继续这样做。
因此,最终在c#中编写了我自己的表格样式并将其应用于excel范围,该范围被提及为 SourceRange 。它就像写CSS一样 如果您有兴趣在此问题上了解该评论的详细信息,或者您可以通过我的个人资料与我联系。