用pageOffice控件实现 office word文档在线编辑 表格中写数据的方法
PageOffice对Word文档中Table的操作,包括给单元格赋值和动态添加行的效果。
1 应用场景
OA办公中,经常要在文档的指定位置表格,填充后端指定数据。
如word文档中,表格数据 如下表格中
人员信息
人员信息表 |
||
公司名称 |
部门名称 |
员工姓名 |
A公司 |
开发部 |
李清 |
B公司 |
销售部 |
张三 |
怎么把后端的关键数据,填充到word文档表格中呢?
2 实现方法
文档中设置好书签,设置好表格后,通过后端调用pageOffice插件代码就可以实现。
3 实现过程
以java的springboot框架为例
1 集成pageOffice
https://www.zhuozhengsoft.com/dowm/
从pageOffice官网
下载页面,找到springboot的集成示例,按照里面的集成明说,可以集成到自己的springboot项目中。
2 设置数据区域 包含表格
数据区域的技巧
https://www.kancloud.cn/pageoffice_course_group/pageoffice_course/663125
最终效果如图
注意,一定要书签包含整个表格,并且还要包含表格上下一行
3 通过代码写入数据
@RequestMapping(value = "Word", method = RequestMethod.GET) public ModelAndView showWord(HttpServletRequest request, Map<String, Object> map) { PageOfficeCtrl poCtrl = new PageOfficeCtrl(request); poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");//设置服务页面 WordDocument doc = new WordDocument(); //打开数据区域 DataRegion dataRegion = doc.openDataRegion("PO_regTable"); //打开table,openTable(index)方法中的index代表Word文档中table位置的索引,从1开始 Table 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); //隐藏菜单栏 poCtrl.setMenubar(false); //隐藏自定义工具栏 poCtrl.setCustomToolbar(false); //打开Word文档 poCtrl.webOpen("/doc/WordSetTable/test.doc", OpenModeType.docNormalEdit, "张三"); map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1")); ModelAndView mv = new ModelAndView("WordSetTable/Word"); return mv;
通过以上代码,可以将数据库中的
A公司 开发部 李清
B公司 销售部 张三
写到文档中。
4 代码打开后的效果
5 总结
PageOffice对Word文档中Table的操作,包括给单元格赋值和动态添加行的效果。