我遇到的问题是table.Columns.add(ref Object BeforeColumn)
需要引用表中的另一列。但是,当我尝试访问表中的最后一列以使用table.Columns.Add(table.Columns[table.Columns.Count])
我收到错误:
“无法访问此集合中的各个列,因为该表具有混合的单元格宽度。”
正如我当前的解决方法,我捕获错误,并调用table.Columns.DistributeWidth()
以确保列是统一的并运行其余代码。但是,我以这种方式丢失了单元格宽度的格式,这是不幸的。
有什么方法可以在不丢失单元格宽度的情况下解决这个问题吗?
(我意识到一种方法是在运行此过程之前存储每个单元格的宽度,然后重新应用宽度,但这似乎是一个非常昂贵的解决方案,应该更简单)
答案 0 :(得分:1)
我找到了一种方法。这是我接近它的方式。
*注意,我假设桌子是统一的。即,所有行的列数相同。 (注意,API有一个Table.uniform函数,但描述不完整。在API中它表示“如果表中的所有行具有相同的列数,则为True。”但是,它还检查列是否具有均匀宽度)。
我没有使用table.Columns.Add(table.Columns[table.Columns.Count])
在下面的最后一个列之前添加列,而是在表中选择一个单元格并使用insert命令:
//assuming table is the name of the table you want to add columns to
table.Cell(1, table.Columns.Count).Select();
word.Selection selection = table.Application.ActiveWindow.Selection;
selection.InsertColumns();
这实际上可能是添加列的更好方法,因为api为您提供了更多关于如何插入的选项(即使用InsertColumnsRight插入列的右侧)。默认情况下,Columns.Add(...)函数插入到选择
的左侧