将D://word_export.doc(word2003)文件中表格数据读取出来并存入到数据库中。表格数据如下图所示:

20064001

刘景玉

1987-01-25

河南商丘

20064002

李会

1986-05-30

湖北武汉

20064003

卢昊

1988-09-21

湖南长沙

20064004

张艳华

1989-06-14

四川成都

20064005

于玮祺

1986-02-27

河南信阳

20064006

李强

1988-11-06

河南信阳

20064007

李华

1985-11-03

山东济南

20064008

李欣

1987-12-06

四川成都

20064009

刘西亚

1988-01-06

湖北武汉

20064010

张才

1989-07-11

辽宁大连

20064011

吴霞

1986-10-07

辽宁大连

要实现这一过程,要用到Apache POI(POI提供API给Java程序对MicrosoftOffice格式档案读和写的功能)和JDBC(是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,由一组用Java语言编写的类和接口组成)。

该例用到的是POI的HWPF接口,POI Jar包下载地址:http://poi.apache.org/download.html

HWPF接口:

HWPF接口主要用来处理 MS Word(97-2003)对象,是 POI 中相对不太成熟的部分。但可以做一些基本的对于对 word 文档的读写操作。HWPF提供给我们使用的对象在 org.apache.poi.hwpf.extractor 和 org.apache.poi.hwpf.usermodel 包中,主要部分包括 Word 对象,表格等。主要有以下几种对象:
org.apache.poi.hwpf.extractor.WordExtractor:从 Word 文档中提取出文本的类。
org.apache.poi.hwpf.usermodel.Paragraph:对应于 Word 的一个段落。
org.apache.poi.hwpf.usermodel.Table:对应于 Word 的一个表格。
org.apache.poi.hwpf.usermodel.TableCell:对应于 Word 的表格的一个单元格。
org.apache.poi.hwpf.usermodel.Range:是 HWPF 对象模型的核心类,适用于在 Word 文档中的字符的范围的所有属性扩展这个类。它可以插入文字或者选定一定范围的属性。
而操作 Word 2007 文档则有XWPF接口,其相关对象在?org.apache.poi.xwpf.extractor 和org.apache.poi.xwpf.usermodel包中。

JDBC流程原理:(见:http://baike.sogou.com/v607995.htm?fromTitle=jdbc)

具体实现代码如下:

package word_export;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.Table;
import org.apache.poi.hwpf.usermodel.TableCell;
import org.apache.poi.hwpf.usermodel.TableIterator;
import org.apache.poi.hwpf.usermodel.TableRow;import org.apache.poi.hwpf.extractor.WordExtractor;import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class word_export {public static void main(String[] args) throws Exception {Connection conn = null;//创建数据库连接对象String sql;// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值// 避免中文乱码要指定useUnicode和characterEncoding// 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,String url = "jdbc:mysql://localhost:3306/student?"+ "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";try {Class.forName("com.mysql.jdbc.Driver");//加載mysql驱动System.out.println("成功加载MySQL驱动程序");// 一个Connection代表一个数据库连接conn = DriverManager.getConnection(url);//通过DriverManager类创建数据库连接对象Connection//Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等Statement stmt = conn.createStatement();//创建声明FileInputStream in = new FileInputStream("D:\\word_export.doc");// 载入文档POIFSFileSystem pfs = new POIFSFileSystem(in);HWPFDocument hwpf = new HWPFDocument(pfs);Range range = hwpf.getRange();// 得到文档的读取范围TableIterator it = new TableIterator(range);String[] stu =new String[5];// 迭代文档中的表格while (it.hasNext()) {Table tb = (Table) it.next();// 迭代行,默认从0开始for (int i = 0; i < tb.numRows(); i++) {TableRow tr = tb.getRow(i);            // 迭代列,默认从0开始for (int j = 0; j < tr.numCells(); j++) {TableCell td = tr.getCell(j);// 取得单元格// 取得单元格的内容String s="";                     for (int k = 0; k < td.numParagraphs(); k++) {Paragraph para = td.getParagraph(k);// 获取第k个段落s += para.text();System.out.println(s);}s = s.replace("•","");stu[j]= s ;// end for}// end forsql = "insert into student_information(student_no,student_name,birthday,sex,place) values ('" +stu[0]+ "','" +stu[1]+ "','" +stu[2]+ "','" +stu[3]+ "','" +stu[4]+ "')";//student_information表中有student_id(自增型int)System.out.println("insert done!");
//              sql="truncate table student_information";//删除表中数据int result = stmt.executeUpdate(sql);}// end forsql = "select * from student_information";ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值while (rs.next()) {System.out.println(rs.getString(2) + "\t" + rs.getString(3) + "\t" + rs.getDate(4) + "\t" + rs.getString(5) + "\t" + rs.getString(6));// 如果返回的是int类型可以用getInt(),getString方法括号中的数字表示<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">单元格下标,从1开始。</span>}  } // end while} catch (SQLException e) {System.out.println("MySQL操作错误");e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {conn.close();}}// end method
}       

java读取word中的表格并存入到mysql数据库中实例相关推荐

  1. JAVA table word,实战 | Java读取Word,包含表格!

    本文转载自微信公众号「JAVA日知录」,作者单一色调.转载本文请联系JAVA日知录公众号. 不能每天都发鸡汤呀,今天分享一篇开发实战. 业务需求 我们有这样一个需求,需要抽取出WORD文档中的内容,然 ...

  2. java 读取word 表格,实战 | JAVA读取WORD,包含表格。

    业务需求 我们有这样一个需求,需要抽取出WORD文档中的内容,然后组装成特定的json格式发送给第三方引擎接口,输入协议如下: { "tables": [ { "cell ...

  3. java word搜索,实战 | Java读取Word,包含表格!

    本文转载自微信公众号「JAVA日知录」,作者单一色调.转载本文请联系JAVA日知录公众号. 不能每天都发鸡汤呀,今天分享一篇开发实战. 业务需求 我们有这样一个需求,需要抽取出WORD文档中的内容,然 ...

  4. c 将图片存入到mysql数据库中_如何将图片转换存入到数据库中,并从数据库中取出转换成图片...

    有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来. 首先,我们要把图片存 ...

  5. 将DataFrame格式的数据存入到mysql数据库中

    因为最近频繁操作数据库,特别是写入数据比较麻烦.在DataFrame格式或者是Series格式的数据处理之后,总是会面临写入数据,迫不得已只能进行格式转换,搜索过程中发现了to_sql()函数,就百度 ...

  6. mysql中删除数据库中的表格数据恢复_恢复从数据库中删除的表

    恢复从数据库中删除的表Recover tables deleted from a database 09/25/2018 本文内容 本主题演示如何创建一个示例 Visual Basic for App ...

  7. MySQL怎么展示表格_如何在MySQL数据库中显示表的架构?

    从MySQL控制台,什么命令显示任何给定表的架构? #1楼 SHOW CREATE TABLE yourTable; 要么 SHOW COLUMNS FROM yourTable; #2楼 descr ...

  8. 从mysql数据库中读取二进制文件_数据库技术之在MYSQL数据库中如何存取二进制文件...

    [数据库技术之在MYSQL数据库中如何存取二进制文件]在MySQL数据库中,不可以存放文字信息,还可以存放图片.声音.文件等二进制信息.那么在MYSQL数据库中中如何存取二进制文件?下面,武汉宏鹏鲁广 ...

  9. 关于怎么把Excel表格导入MySQL数据库中

    关于怎么把Excel表格导入MySQL数据库中 第一步:建造Excel表格并且编辑数据. 1.我们要建立一个Excel表格文件 2.编辑我们需要的数据 3.保存到你知道的位置 第二步:在MySQL中建 ...

最新文章

  1. pytorch ctcloss 参数详解
  2. 学python是看书还是看视频-学 Python 你觉得是看书还是看视频?
  3. SharePoint 2007 系列(12) SharePoint Master Page
  4. ios 部分string颜色_iOS-代码混淆加固方案
  5. C# 实现将网络资源保存到本地
  6. python字符串转化为数字-python 中判断字符串能否转换为数字类型
  7. 复旦大学邱锡鹏教授《神经网络与深度学习》最新版更新!
  8. keil p0 0c语言不了,Keil C51对C语言的关键词扩展之十三: sfr
  9. JAVA从url中分离ip和port
  10. python能做底层开发吗_python底层是什么语言
  11. srve0255e尚未定义要怎么办_刺激战场:如何免费获得自定义房卡?方法有三种,内含国服福利!...
  12. 自定义RatingBar
  13. 数据结构-第10周作业(二叉树的创建和遍历算法)
  14. 游戏安全资讯精选 2017年第十七期
  15. 程序员一些有意思的智力题整理
  16. 涨知识:面试字节跳动Java研发岗,经验分享
  17. mybatis基础(上)
  18. 做视频自媒体,选择一个合适的剪辑软件很重要,这些或许适合你
  19. iPhone像素点和常用控件尺寸
  20. oracle 01405 提取的值为null,OCI : ORA-01405: 提取的列值为 NULL

热门文章

  1. surface pro 4恢复问题解决方案
  2. python从pdf文件中提取文本,并自动翻译
  3. 健康开怀一辈子(转)
  4. 实现 flatten 扁平化对象和数组
  5. css3之 谜灯卡片_CSS3 迷幻光影文本特效
  6. Gif动图制作神器(GifCam)
  7. IT培训机构如何选择?选择IT培训机构3大误区
  8. 鸿蒙与北斗星云手机,为何其他国产手机不接入鸿蒙?王成录一语道出真谛
  9. 小象学院之python实例
  10. 极客漫画-网络篇(二)