java读取word表格导入数据库,支持doc、docx

word表格做数据库导入,用的是poi 3.8的包,jdk我用的是1.6

package com.word;

import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;
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.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;

/**
 * 
 * 读取word表格导入数据库,支持doc、docx
 * @author muyunfei
 * @qq 1147417467
 * @company 海颐软件
 * <p>Modification History:</p> 
 * <p>Date       Author      Description</p>
 * <p>------------------------------------------------------------------</p>
 * <p>Aug 31, 2015           牟云飞       		 新建</p>
 */
public class ExportDocImpl {
	public static void main(String[] args) {
		ExportDocImpl test = new ExportDocImpl();
		//String filePath="E:\\java导入word表格.doc";
		String filePath="E:\\java导入word表格.docx";
		test.testWord(filePath);
	}
	public void testWord(String filePath){
		  try{
		     FileInputStream in = new FileInputStream(filePath);//载入文档
		     //如果是office2007  docx格式
		     if(filePath.toLowerCase().endsWith("docx")){
		    	//word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后   
		    	 XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息
//		    	 List<XWPFParagraph> listParagraphs = xwpf.getParagraphs();//得到段落信息
		    	 Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格
		    	 while(it.hasNext()){
		    		 XWPFTable table = it.next();  
		    		 List<XWPFTableRow> rows=table.getRows(); 
		    		 //读取每一行数据
		    		 for (int i = 0; i < rows.size(); i++) {
		    			 XWPFTableRow  row = rows.get(i);
		    			 //读取每一列数据
			    	     List<XWPFTableCell> cells = row.getTableCells(); 
			    	     for (int j = 0; j < cells.size(); j++) {
			    	    	 XWPFTableCell cell=cells.get(j);
			    	    	 //输出当前的单元格的数据
			    	    	 System.out.println(cell.getText());
						}
		    		 }
		    		 
		    	 }
		     }else{
		    	 //如果是office2003  doc格式
			      POIFSFileSystem pfs = new POIFSFileSystem(in);   
			      HWPFDocument hwpf = new HWPFDocument(pfs);   
			      Range range = hwpf.getRange();//得到文档的读取范围
			      TableIterator it = new TableIterator(range);
			     //迭代文档中的表格
			      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);//取得单元格
			                  
			                  //取得单元格的内容
			                  for(int k=0;k<td.numParagraphs();k++){   
			                      Paragraph para =td.getParagraph(k); 
			                      String s = para.text();
			                      //去除后面的特殊符号
			                      if(null!=s&&!"".equals(s)){
			                    	  s=s.substring(0, s.length()-1);
			                      }
			                      System.out.println(s);
			                  }    
			              } 
			          } 
			      }
		     }
		  }catch(Exception e){
		   e.printStackTrace();
		  }
	  
	}
		 
		
 
}


要实现将Word试卷导入数据库中,可以使用Java的Apache POI库来读取Word文档中的表格数据,然后使用JDBC连接数据库并将数据插入到数据库中。以下是一个简单的实现步骤: 1. 引入Apache POI和JDBC库。 ```java import java.io.*; import java.sql.*; import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.hwpf.usermodel.*; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.*; ``` 2. 使用Apache POI库读取Word文档中的表格数据。 ```java FileInputStream fis = new FileInputStream("test.docx"); XWPFDocument docx = new XWPFDocument(fis); // 获取文档中所有表格 List<XWPFTable> tables = docx.getTables(); for (XWPFTable table : tables) { // 获取表格中所有行 List<XWPFTableRow> rows = table.getRows(); for (XWPFTableRow row : rows) { // 获取行中所有单元格 List<XWPFTableCell> cells = row.getTableCells(); for (XWPFTableCell cell : cells) { // 获取单元格中的文本 String text = cell.getText(); // 处理文本并插入到数据库中 // ... } } } fis.close(); ``` 3. 使用JDBC连接数据库,并将数据插入到数据库中。 ```java String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); // 创建PreparedStatement对象并插入数据 PreparedStatement ps = conn.prepareStatement("INSERT INTO table_name VALUES (?, ?, ?)"); ps.setString(1, "value1"); ps.setString(2, "value2"); ps.setString(3, "value3"); ps.executeUpdate(); ps.close(); conn.close(); ``` 以上是一个简单的实现步骤,具体实现还需要根据实际情况进行调整和优化。同时,需要注意的是,Apache POI库支持读取docdocx格式的Word文档,但是对于doc格式的文档,需要使用HSSFWorkbook类进行读取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牟云飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值