国产linux系统(银河麒麟,统信uos)使用 PageOffice实现word 文档中的table插入新行并赋值

PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(Mips、LoogArch)芯片架构。

在项目的开发中会遇到这样的需求:要求在生成word文件的时候,需要给表格赋值,但是表格行数不固定,需要根据数据库中的数据记录实现数据填充。通过调用PageOffice动态添加行的功能,就可以实现此需求。

比如一个下图所示的Word表格文件:

使用本文"后端代码"对表格做数据填充后的效果如下图所示:

Word中的table是要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table。因此,要想使用table,则必须在word文件中插入书签。而table的插入,既可以在Word模版中书签处手动插入:工具栏"插入"→"表格",亦可以在程序中通过数据区域动态添加。

后端代码

复制代码
    PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

    WordDocumentWriter doc = new WordDocumentWriter();
    //打开数据区域
    DataRegionWriter dataRegion = doc.openDataRegion("PO_regTable");
    //打开table,openTable(index)方法中的index代表Word文档中table位置的索引,从1开始
    TableWriter table = dataRegion.openTable(1);

    //给table中的单元格赋值, openCellRC(int,int)中的参数分别代表第几行、第几列,从1开始
    table.openCellRC(3, 1).setValue("A公司");
    table.openCellRC(3, 2).setValue("开发部");
    table.openCellRC(3, 3).setValue("李清");

    //插入一行,insertRowAfter方法中的参数代表在哪个单元格下面插入一个空行
    table.insertRowAfter(table.openCellRC(3, 3));

    table.openCellRC(4, 1).setValue("B公司");
    table.openCellRC(4, 2).setValue("销售部");
    table.openCellRC(4, 3).setValue("张三");

    poCtrl.setWriter(doc);

    //webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
    poCtrl.webOpen("D:\\template1.docx", OpenModeType.docNormalEdit, "张三");

参考链接:https://pageoffice.cn/pages/9fa856/

相关推荐
亮子AI4 小时前
如何做一个类似Word的编辑器?要有修改标记功能
编辑器·word
低调电报7 小时前
在WPS可以显示图片,word中不能显示的原因及解决
经验分享·word·wps
shouchaobao21 小时前
免费PDF工具:PDF转Word/Excel/图片+AI总结+合并拆分+OCR识别,多端无广告!
pdf·word·excel
lqz19932 天前
根据html导出excel和word
html·word·excel
缺点内向2 天前
C# 中 Word 文档目录的插入与删除指南
开发语言·c#·word·.net
诸神缄默不语3 天前
如何用Python处理文件:Word导出PDF & 如何用Python从Word中提取数据:以处理简历为例
python·pdf·word
初九之潜龙勿用3 天前
C# 操作Word模拟解析HTML标记输出带格式的文本
开发语言·c#·word·office
裤裤兔4 天前
利用VBA批处理word 文档,使用宏对docx文件内容进行批量替换
c#·word·.net··vba·office·宏操作
gc_22994 天前
学习C#调用FreeSpire.Doc包将Word转换为html
c#·html·word·freespire.doc
gc_22994 天前
学习C#调用Microsoft.Office.Interop.Word将Word转换为html
c#·html·word·interop.word