2012-09-24 33 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调用中的以前分配的表格格式。

相关问题