Java获取word表格中的数据

Java获取word表格中的数据

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

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

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

先看效果:

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

Java获取word表格中的数据_第1张图片

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

Java获取word表格中的数据_第2张图片

 

 部署步骤(只需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文件


 
   
   
   
   
  1. <%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
  • 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的文件

    
     
       
       
       
       
    1. <%@ page language="java"
    2. import= "java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordreader.*"
    3. pageEncoding= "utf-8"%>
    4. <%
    5. //----------- PageOffice 服务器端编程开始 -------------------//
    6. WordDocument doc = new WordDocument( request, response);
    7. DataRegion dataReg = doc.openDataRegion( "PO_table");
    8. Table table = dataReg.openTable( 1);
    9. //输出提交的table中的数据
    10. out.print( "表格中的各个单元的格数据为:

      "
      );
    11. StringBuilder dataStr = new StringBuilder();
    12. for ( int i = 1; i <= table.getRowsCount(); i++)
    13. {
    14. dataStr.append( "
      ");
    15. for ( int j = 1; j <= table.getColumnsCount(); j++)
    16. {
    17. dataStr.append( "
      "+table.openCellRC(i,j).getValue()+ "
      "
      );
    18. }
    19. dataStr.append( "
      ");
  • }
  • out.print(dataStr.toString());
  • //向客户端显示提交的数据
  • doc.showPage( 300, 300);
  • doc.close();
  • %>
  • <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">
  • 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/

    如有侵权,请联系博主

    你可能感兴趣的:(pageOffice,java,word,office)