WordHelper 和 OpenXmlUtil 对word 文档里的表格进行插入数据

最近在做项目的时候需要往word文档里插入数据,但是里面包含的有表格,这就是比较难的地方了,最后想到了两种解决方法。
1,如果确定表格数据是固定的行数的时候可以使用WordHelper 中对已知的表格插入书签,之后根据书签名循环插入。方法如下:

在这里插入图片描述
在这里插入图片描述在这里我的表格是:没有算上表头的我让数据循环20次 如果数据超出20次的时候多出的数据就不会插入。这种方法只限于表格行固定的数量来使用。
在这里插入图片描述
这里需要引用 Wisdombud.Office 这个大家可以在网上下载一下。

2,第二种方式就是使用OpenXmlUtil 对表格动态的插入数据。这种方式就是对那些数据量不固定,表格行也不固定的,使用这个方式比较好一点。

1,首先你要在文档中找到你需要添加插入数据的表格的索引,这样就可以更方便的去查找了:
在这里插入图片描述
通过输出就可以看到你想要插入数据的表格的索引是多少了。
2,其次就是要插入数据了大家可以参考一下我写的
在这里插入图片描述
在这里插入图片描述
这样就可以循环的插入数据了,而且没有数据的时候也会默认保留一行空白的。
使用这个方法需要引用 DocumentFormat.OpenXml

针对 以上的两种方式大家根据自己的情况可以参考。也希望各位大佬多多吐槽我的不足.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按以下步骤使用NPOI 2.4.1进行Word操作,复制指定页码页面,并在该页面后面进行粘贴: 1. 引入NPOI和NPOI.OpenXmlFormats的命名空间: ```csharp using NPOI.XWPF.UserModel; using NPOI.OpenXmlFormats.Wordprocessing; ``` 2. 创建一个XWPFDocument对象,表示要操作的Word文档: ```csharp XWPFDocument doc = new XWPFDocument(new FileStream("your_word_file.docx", FileMode.Open)); ``` 3. 获取指定页码的页面段落列表,复制这些段落: ```csharp List<XWPFParagraph> pageParagraphs = doc.GetParagraphsOnPage(pageNumber); List<XWPFParagraph> copiedParagraphs = new List<XWPFParagraph>(); foreach (XWPFParagraph para in pageParagraphs) { copiedParagraphs.Add(para); } ``` 其,GetParagraphsOnPage是一个自定义的方法,用于获取指定页码的页面段落列表。 4. 在指定页码页面后面插入复制的段落: ```csharp XWPFParagraph lastPara = doc.GetParagraphArray(doc.Paragraphs.Count - 1); foreach (XWPFParagraph para in copiedParagraphs) { XWPFParagraph newPara = doc.CreateParagraph(); newPara.InsertNewRun(0).SetText(para.Text); newPara.GetCTP().PPr = (CT_PPr)para.GetCTP().PPr.Clone(); newPara.GetCTP().RList = (CT_R[])para.GetCTP().RList.Clone(); int insertPos = doc.Paragraphs.IndexOf(lastPara) + 1; doc.Paragraphs.Insert(insertPos, newPara); } ``` 其,InsertNewRun方法用于在段落插入新的文本块,GetCTP方法用于获取段落的CTP对象,PPr和RList属性分别用于复制段落的格式和文本块列表。 5. 将修改后的Word文档保存: ```csharp doc.Write(new FileStream("your_modified_word_file.docx", FileMode.Create)); ``` 完整代码示例: ```csharp using NPOI.XWPF.UserModel; using NPOI.OpenXmlFormats.Wordprocessing; using System.Collections.Generic; using System.IO; public class WordHelper { public static void CopyAndPastePage(XWPFDocument doc, int pageNumber) { // 获取指定页码的页面段落列表,复制这些段落 List<XWPFParagraph> pageParagraphs = doc.GetParagraphsOnPage(pageNumber); List<XWPFParagraph> copiedParagraphs = new List<XWPFParagraph>(); foreach (XWPFParagraph para in pageParagraphs) { copiedParagraphs.Add(para); } // 在指定页码页面后面插入复制的段落 XWPFParagraph lastPara = doc.GetParagraphArray(doc.Paragraphs.Count - 1); foreach (XWPFParagraph para in copiedParagraphs) { XWPFParagraph newPara = doc.CreateParagraph(); newPara.InsertNewRun(0).SetText(para.Text); newPara.GetCTP().PPr = (CT_PPr)para.GetCTP().PPr.Clone(); newPara.GetCTP().RList = (CT_R[])para.GetCTP().RList.Clone(); int insertPos = doc.Paragraphs.IndexOf(lastPara) + 1; doc.Paragraphs.Insert(insertPos, newPara); } } } // 使用示例 XWPFDocument doc = new XWPFDocument(new FileStream("your_word_file.docx", FileMode.Open)); WordHelper.CopyAndPastePage(doc, 2); // 复制第2页的内容并在第2页后面进行粘贴 doc.Write(new FileStream("your_modified_word_file.docx", FileMode.Create)); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值