You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NPOI Word:如何克隆行并插入到指定索引位置?

解决NPOI克隆Word表格行并插入指定位置的问题

正确实现步骤

要克隆数据行并插入到指定位置,需要同时操作底层XML结构和NPOI的对象集合——因为XWPFTable的Rows是缓存集合,仅操作它不会同步到Word文档的底层XML。具体代码如下:

// 假设table是目标XWPFTable对象
XWPFTableRow dataRow = table.Rows[1]; // 第2行(数据占位行,索引从0开始)
int insertIndex = 2; // 插入到数据行之后、汇总行之前的位置

// 1. 复制底层的CT_Row对象(包含行的格式和内容)
CT_Row clonedCtRow = (CT_Row)dataRow.GetCTRow().Copy();

// 2. 将克隆的CT_Row插入到表格的底层XML结构中
CT_Table ctTable = table.GetCTTbl();
ctTable.tr.Insert(insertIndex, clonedCtRow);

// 3. 同步XWPFTable的Rows缓存集合
XWPFTableRow newRow = new XWPFTableRow(clonedCtRow, table);
table.Rows.Insert(insertIndex, newRow);

为什么之前的尝试失败

  • CloneRow():该方法内部默认调用table.AddRow(newRow),会把新行添加到表格末尾,而非指定位置。
  • 仅调用table.Rows.Insert():只更新了NPOI的缓存集合,没有修改Word文档的底层XML结构,导致新行在文档中不显示。
  • InsertNewTableRow():此方法会创建空行,不会复制原数据行的格式和内容,因此破坏表格结构。
  • Copy():该方法属于浅拷贝,未正确关联表格对象和底层XML,所以无效果。

内容的提问来源于stack exchange,提问作者elshev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:45:05