1

我正在制作一个加载项,我正在尝试格式化我的加载项生成的输出,使用格式作为 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 中的特定样式,您就会得到它。

我的问题是,即使我保留SourceRange10 列,直到最后的所有列都被选中并被视为一个表。因为我在它旁边填充的表也被认为是生成的第一个表的一部分。因为,两个表都具有相同的列名,所以 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);

请提出一条出路。

4

2 回答 2

1

我们能够弄清楚为此发生了什么:

xlWorkbook.Worksheets.Add([before],[after], Type.Missing, Type.Missing) 通话中,我们必须前后翻转,因为我们希望工作表向右移动,而不是向左移动,然后 xlWorkbook.Worksheets[sheetCount] 通过增加工作表数来访问,无论生成多少工作表。

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

于 2016-11-30T21:20:26.663 回答
0

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

于 2013-07-26T12:09:00.880 回答