为有中文需求的客户提供多渠道中文技术支持.

Thu Mar 20, 2025 9:40 am

假设Word有一个1行2列的表格,合并这两列,现在表格应该是1行1列。但是实际上获取到的表格还是1行2列。保存到文件后重新读取文件,现在获取到的表格信息是1行1列。
Word互操作合并单元格后行列信息会立即更新,下次合并需要使用新的行列序号。这会导致为互操作开发的合并逻辑与Spire Doc不兼容,请问有什么办法在不保存文档的情况下更新表格的行列信息?
如果需要在保存文档前使操作可逆,是否能够提供类似书签导航器的类型对原始表格进行包装,在其中提供Word模式的行列信息以及原始表格信息的转换函数。例如上例的表格,在包装类中应该显示1行1列;将原始表格的单元格或者行列序号作为参数提供给包装类,可以查询这个单元格在Word模式下对应的行列序号是多少;以及对应的反向查询,提供Word模式的行列序号,返回这个序号所对应的原始表格的单元格集合。
另外,互操作所使用的行列序号从1开始,不过这并不是问题,很容易计算。

coredx93
 
Posts: 4
Joined: Thu Mar 20, 2025 8:32 am

Fri Mar 21, 2025 2:47 am

您好,

感谢您的咨询。
您可以在合并单元格后调用doc.UpdatePageLayout();方法,此方法会刷新页面布局,更新表格的行列信息。我附上了我的测试代码以及测试结果供您参考。如果您还有其他任何问题,请随时来信。
Code: Select all
Document doc = new Document();
Table table = doc.AddSection().AddTable(true);
// 创建一个1行两列的表格
table.ResetCells(1, 2);
Console.WriteLine("合并前单元格个数:"+table.Rows[0].Cells.Count);
// 合并2格单元格
table.ApplyHorizontalMerge(0, 0, 1);
// 更新页面布局,刷新表格
doc.UpdatePageLayout();
Console.WriteLine("合并后单元格个数:"+table.Rows[0].Cells.Count);
Console.ReadLine();

Sincerely,
William
E-iceblue support team
User avatar

William.Zhang
 
Posts: 766
Joined: Mon Dec 27, 2021 2:23 am

Return to 中文技术支持