Java获取word表格中的数据

article/2025/9/23 14:32:40

前言:

有时系统中需要提取各种文件中的数据,比如做报表的系统中就常常与Excel表格数据做交互。做Excel报表数据时有选择POI实现的,但是POI功能也很单一,对于文档格式维护性差,最重要的是POI在操作word数据时显得力不从心,所以对于word中数据的交互就要找找其他方式。其实对于文档的操作,微软有自己的一套东西——activex控件。

但是这需要开发者具备将activex控件集成到Java环境的能力。对于大部分Java开发工程师来说,仅仅解决单一的功能就要掌握activex控件,未免学习成本太大。

所以我们今天就要介绍一个中间件技术——pageoffice,此中间件技术已经将 在web系统操作office文档的大部分功能整合完毕,大家只需要关注自己web系统的业务逻辑即可,学习成本低,且功能很丰富。下面我们来实战用pageoffice实现一下用Java从word文档的表格中提取数据的功能。

先看效果:

打开的文档中有下面这么一个表格

点击保存,弹出了如下窗口,窗口中是word表格中的数据。这里只是为了演示,其实这些数据是在后台中拿到后然后又输出到页面中的,实际开发中拿到数据可以保存到数据库的。

 

 部署步骤(只需5步)

1.官网http://www.zhuozhengsoft.com/dowm/下载集成文件,引入jar包,配置web.xml

去刚才下载的集成文件中找到lib,将里面的内容放在项目web-inf的lib中引入jar包,然后将web.xml的pageoffice配置引入到自己项目的wb.xml中

2.在父页面aaa.jsp(需要打开文档的页面)放一个a标签或者button

写a标签之前先引入pageoffice需要的js文件

<script type="text/javascript" src="/jquery.min.js"></script>
<script type="text/javascript" src="/pageoffice.js" id="po_js_main"></script>

然后添加a标签 

<a href="javascript:POBrowser.openWindowModeless('Default.jsp' , 'width=1200px;height=800px;');">获取Word文件中表格的数据</a>

3.在父页面同级目录下创建一个名为Default.jsp的文件

<%@ page language="java" import="java.util.*, java.awt.*" pageEncoding="utf-8"%>
<%@page import="com.zhuozhengsoft.pageoffice.*, com.zhuozhengsoft.pageoffice.wordwriter.*"%>
<%
//***************************卓正PageOffice组件的使用********************************WordDocument doc = new WordDocument();//打开数据区域DataRegion dTable = doc.openDataRegion("PO_table");//设置数据区域可编辑性dTable.setEditing(true);//打开数据区域中的表格,OpenTable(index)方法中的index为word文档中表格的下标,从1开始Table table1 = dTable .openTable(1);//设置表格边框样式table1.getBorder().setLineColor(Color.green);table1.getBorder().setLineWidth(WdLineWidth.wdLineWidth050pt);// 设置表头单元格文本居中table1.openCellRC(1, 2).getParagraphFormat().setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);table1.openCellRC(1, 3).getParagraphFormat().setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);table1.openCellRC(2, 1).getParagraphFormat().setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);table1.openCellRC(3, 1).getParagraphFormat().setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);// 给表头单元格赋值table1.openCellRC(1, 2).setValue("产品1");table1.openCellRC(1, 3).setValue("产品2");table1.openCellRC(2, 1).setValue("A部门");table1.openCellRC(3, 1).setValue("B部门");PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);poCtrl.setWriter(doc);//添加自定义按钮poCtrl.addCustomToolButton("保存", "Save", 1);poCtrl.addCustomToolButton("全屏/还原", "IsFullScreen", 4);//设置服务器页面poCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须//设置保存页poCtrl.setSaveDataPage("SaveData.jsp");//设置文档打开方式poCtrl.webOpen("test.doc", OpenModeType.docSubmitForm, "张佚名");
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>数据区域提交表格</title><link href="images/csstg.css" rel="stylesheet" type="text/css" /></head>
<body><div id="content"><div id="textcontent" style="width: 1000px; height: 800px;"><script type="text/javascript">//保存页面function Save() {document.getElementById("PageOfficeCtrl1").WebSave();}//全屏/还原function IsFullScreen() {document.getElementById("PageOfficeCtrl1").FullScreen = !document.getElementById("PageOfficeCtrl1").FullScreen;}</script><!--**************   卓正 PageOffice组件 ************************--><%=poCtrl.getHtmlCode("PageOfficeCtrl1")%></div></div></body>
</html>

4.新建文件

新建一个名为test.doc的word文件(如果新建的是docx文件就将第三步的poCtrl.webOpen("test.doc", OpenModeType.docSubmitForm, "张佚名");代码改为poCtrl.webOpen("test.docx", OpenModeType.docSubmitForm, "张佚名");

将新建的test.doc文件放在Default.jsp同级目录下。

本地打开test.doc文件,创建一个3行3列的表格,然后点击表格左上角的全选标志选中整个表格。

整个表格选中的情况下,点击菜单栏插入-书签--书签名设置为PO_table--点击添加(书签名称格式为PO_开头,比如自己设置的书签名为PO_T001,那么记得将第三步中的 DataRegion dTable = doc.openDataRegion("PO_table");改为 DataRegion dTable = doc.openDataRegion("PO_T001");)。

 5.在父页面同级目录下创建一个名为SaveData.jsp的文件

<%@ page language="java"import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordreader.*"pageEncoding="utf-8"%>
<%//-----------  PageOffice 服务器端编程开始  -------------------//WordDocument doc = new WordDocument(request,response);DataRegion dataReg = doc.openDataRegion("PO_table");Table table = dataReg.openTable(1);//输出提交的table中的数据out.print("表格中的各个单元的格数据为:<br/><br/>");StringBuilder dataStr = new StringBuilder();for (int i = 1; i <= table.getRowsCount(); i++){dataStr.append("<div style='width:220px;'>");for (int j = 1; j <= table.getColumnsCount(); j++){dataStr.append("<div style='float:left;width:70px;border:1px solid red;'>"+table.openCellRC(i,j).getValue()+"</div>");}dataStr.append("</div>");}out.print(dataStr.toString());//向客户端显示提交的数据doc.showPage(300, 300);doc.close();
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>My JSP 'SaveFile.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body></body>
</html>

(如果自己设置的书签名为PO_T001,记得将上面的DataRegion dataReg = doc.openDataRegion("PO_table");改为 DataRegion dataReg = doc.openDataRegion("PO_T001");)。

然后启动项目直接访问aaa.jsp点击链接.此时会提示安装插件,点击安装成功后提示注册,填写相关信息,填写注册码Q37LN-W8NI-KFSQ-LEY3Y就可以打开文档.

注意:如果需要更丰富的功能,可以去pageoffice官网下载示例代码直接将samples4文件夹拷贝到Tomcat的webapps下,启动Tomcat,浏览器访问http://localhost:8080/Samples4/index.html,查看示例中的下面一个链接,直接看samples4文件夹下DataRegionTable文件夹里面的代码.

 

刚开始接触pageoffice的话,也可以看视频快速上手http://www.zhuozhengsoft.com/Technical/

如有侵权,请联系博主


http://chatgpt.dhexx.cn/article/9HTMpjB9.shtml

相关文章

HTML 表格元素

表格元素 在日常生活中&#xff0c;我们对表格已经非常熟悉了&#xff0c;表格的基本作用是用来存放数据&#xff0c;它是数据的二维容器&#xff0c;人们常常用它来记录财务数据、列车时刻表、电视节目单等。 大多数情况下&#xff0c;表格都是由列标题或行标题&#xff0c;…

Bootstrap3 表格样式

表格 HTML表格是数据的二维容器&#xff0c;它的基本作用是用来存放数据。表格能够清晰、直观地描述数据间的逻辑关系&#xff0c;如果借助CSS设计表格的样式&#xff0c;阅读数据将会变得更轻松。 表格结构包括众多标签&#xff0c;这些标签各司其职&#xff0c;共同完成二维…

数据库表格查询

1、数据库表示存储数据中所有数据的对象&#xff0c;在表中&#xff0c;数据按行和烈格式逻辑组织&#xff0c;类似于电子表格&#xff0c;数据库是SchoolMangeSystem&#xff0c;使用数据库表是SYS_Student&#xff0c;如下图&#xff1a; select字段列表&#xff0c;字段别名…

html中标题距离顶部距离,版式设计中标题间距的使用法则

主标题与副标题定义 主标题是文案的核心主旨&#xff0c;可以直接表达&#xff0c;也可以含蓄表达&#xff0c; 副标题是对对主标题意思的具体阐释&#xff0c;或者主标题意思的进一步延伸。 字距与行距 横向的字间距与纵向的行间距的关系&#xff1a; 请保持行间距的高度&…

表格解析 概览

表格解析发展至今&#xff0c;仍然是一项很年轻的研究领域&#xff0c;出现了大量解决方案&#xff0c;常用的技术包括&#xff1a;线检测、box检测、分割、多模态融合、GCN、img2seq。以下按我的理解梳理一下表格解析各个流派&#xff0c;从中了解这项任务背后所采用的技术。在…

5.让表格的标题在滚动表格时一动不动

一、冻结首行首列 处理数据量较大的表格时&#xff0c;向下拖动滚动条&#xff0c;表格的标题栏就不见了&#xff0c;用户在查看数据时&#xff0c;需要来回拖动滚动条才能看到标题&#xff0c;那么是否可以将表格设置成无论怎样滚动表格&#xff0c;标题都始终显示呢&#xf…

python表格控件_python表格控件

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! pyqt5表格控件qtableview简介在通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到qtableview类了,在qtableview中可…

element-ui(vue)表格的自定义标题,逻辑判断

<el-table :data"tableData" style"width: 100%" border><el-table-column width"180"><!-- 自定义标题--><template slot"header"><i class"el-icon-time"></i><span>自定义标题…

tomcat-命令窗口乱码

问题描述&#xff1a;刚下载的tomgcat不添加任何项目直接运行时&#xff0c;tomcat的命令窗口出现中文乱码 解决方法&#xff1a; 1、找到${CATALINA_HOME}/conf/logging.properties 2、添加语句&#xff1a;java.util.logging.ConsoleHandler.encoding GBK 3、重启tomcat&…

在此处打开命令窗口 (Open command window here)

在此处打开命令窗口 (Open command window here) 1. 在此处打开命令窗口 (Open command window here) Shift 鼠标右键 2. .exe 执行 在 .exe 文件所在的文件夹打开命令提示符窗口。如果使用的是 Windows Vista 或 Windows 7 系统&#xff0c;则需要在 Windows Explorer 中右…

mysql自动弹出命令窗口 解决

为什么mysql会自动弹出来命令窗口 关键词&#xff1a; Unable to connect to remote host. Catalog download has failed. 解决办法&#xff1a; 控制面板&#xff08;小图标&#xff09;->管理工具->任务计划程序->mysql->installer 右键禁用即可

win10系统中如何显示在此处打开命令窗口

1、首先按住windowsr键&#xff0c;在弹出的窗口中输入regedit&#xff0c;点击回车 2、找到 计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\cmd&#xff0c;在右侧的框中&#xff0c;鼠标选择“默认”项&#xff0c;右键点击“修改”&#xff0c;在弹出的窗口中输入“…

Windows10如何在文件夹打开DOS命令窗口

在安装RabbitMQ的时候&#xff0c;总结了一下在当前文件夹打开DOS窗口的方式&#xff0c;大概有三种方式&#xff0c;推荐使用第三种。 &#xff08;这里D:\Tools\RabbitMQ\RabbitMQServer\rabbitmq_server-3.9.8\sbin作为目标文件夹&#xff09; 第一种方式 1、winr&#xf…

记录下使用plsql命令窗口执行sql脚本的写法

如果把sql脚本放在sql窗口中执行&#xff0c;速度比较慢&#xff0c;所以可以在命令窗口中输入sql脚本的位置来执行 SQL> C:\Users\Administrator\Desktop\脚本.txt 注意&#xff0c;路径前要加上&#xff0c;否则不会执行。

linux基础-- 桌面系统如何切换命令窗口

简单说一下linux 的一些基本命令&#xff0c;对linux的命令进行一个简单的了解。&#xff08;操作系统为centos7&#xff09; 一般我们个人安装的centos的时候会安装一个桌面系统. window是带有桌面&#xff0c;linux不同的版本也会带有自己的桌面系统的。而centos有两种常见…

matlab运行.m文件的命令,怎样在matlab的命令窗口运行.m文件

www.mh456.com防采集。 有两种方法&#xff1a;1、选中m文件&#xff0c;鼠标右键run&#xff0c;即可。2、在命令窗口输入m文件的名字&#xff0c;即可。觉得有帮助就采纳吧。 这要看你的M文件是函数文件还是脚本&#xff1a;如果是函数function开头&#xff0c;比如function …

1. Win 10 :在此处打开命令窗口

1.在此处打开CMD命令行窗口 在当前目录下打开命令窗口 步骤&#xff1a; - altd定位到资源管理器地址栏。 - 输入cmd后回车截图讲解 ①&#xff1a; ②&#xff1a; ③&#xff1a; 2.在此处打开Windows Powershell 在需要操作的文件夹下按住Shift鼠标右键&#x…

win11添加右键在此处打开命令窗口

win11添加右键在此处打开命令窗口 今天升级win11之后发现右键菜单变了&#xff0c;使用起来很不适应&#xff0c;而且按住 Shift 鼠标右键 也没有了“在此处打开命令窗口”的菜单。 一通百度折腾之后终于改了回来&#xff0c;详细步骤如下&#xff1a; 一、改回win10右键菜单…

Shift+鼠标右键没有:在此处打开命令窗口(W)

Shift鼠标右键没有&#xff1a;在此处打开命令窗口 1.软件环境2.问题描述3.解决方法4.结果预览附&#xff1a;隐藏在此处打开命令Powershell窗口(S) 1.软件环境 Windows10 教育版64位 2.问题描述 命令提示符是在操作系统中&#xff0c;提示进行命令输入的一种工作提示符。在不同…

Intellij IDEA中使用git命令窗口

我们想要在IDEA中使用git窗口&#xff0c;该如何操作呢&#xff1f;其实很简单。 1.依次打开idea->file->tools->Terminal 在shell path 选择git安装目录bin中的bash.exe&#xff0c;就把idea默认的命令窗口切换成了git命令窗口 2.如果出现乱码情况的话&#xff0c;…