1. 程式人生 > >Java讀取並匯出Word中的表格(Excel),匯出檔案為Excel

Java讀取並匯出Word中的表格(Excel),匯出檔案為Excel

看公司的同事很費勁的在一條一條地從Word中的表格複製貼上到Excel,

我從網上找個兩個demo給合在了一起,幫他解決了問題。最下方有原始碼。

一個兩個類

第一個:

package com.wbs.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;

public class Test {

	static String fileName = "testFile";

	public static void main(String[] args) throws IOException {

		testWord();

	}

	public static void testWord(){
		
		ArrayList<User> list = new ArrayList<>();
		list.clear();
		  try{
			  //載入文件最好格式為.doc字尾
			  //.docx字尾檔案可能存在問題,可將.docx字尾檔案另存為.doc
		      FileInputStream in = new FileInputStream(fileName+".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();
				// 原本在此處新建 物件User user = new User();
				// 但匯出的數量不對
		          //迭代行,預設從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(); 
//		                      System.out.println(s);
		                      if(s.contains("點位名稱")){
		                    	  User user = new User();
		                    	  list.add(user);
		                    	list.get(list.size()-1).setName(td.getParagraph(k+1).text());
		                    	  
		                    	  
		                      }
		                      
		                      if(s.contains("所屬區")){
		                    	  list.get(list.size()-1).setArea(td.getParagraph(k+1).text());
		                      }
		                      if(s.contains("維護日期")){
		                    	  list.get(list.size()-1).setDate(td.getParagraph(k+1).text());
		                    	  
		                    	  
		                      }
		                      
		                      if(s.contains("維護措施")){
		                    	  list.get(list.size()-1).setCuoshi(td.getParagraph(k+1).text());
		                      }
		                      
		                      
		                      
//		                      System.out.println(s);
		                  } //end for    
		              }   //end for
		          }   //end for
		          
//		          list.add(user);
		         
		      } //end while
		      
		      createExecl(list);
		      
		      System.out.println(list.size());
		     
		  }catch(Exception e){
		   e.printStackTrace();
		  }
		 }// end method

	public static void createExecl(ArrayList<User> list) {
		// 第一步,建立一個webbook,對應一個Excel檔案
		HSSFWorkbook wb = new HSSFWorkbook();
		// 第二步,在webbook中新增一個sheet,對應Excel檔案中的sheet
		HSSFSheet sheet = wb.createSheet("sheet1");
		// 第三步,在sheet中新增表頭第0行,注意老版本poi對Excel的行數列數有限制short
		HSSFRow row = sheet.createRow((int) 0);
		// 第四步,建立單元格,並設定值表頭 設定表頭居中
		HSSFCellStyle style = wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式

		HSSFCell cell = row.createCell((short) 0);
		cell.setCellValue("點位名稱");
		cell.setCellStyle(style);
		cell = row.createCell((short) 1);
		cell.setCellValue("所屬區");
		cell.setCellStyle(style);
		cell = row.createCell((short) 2);
		cell.setCellValue("維護日期");
		cell.setCellStyle(style);
		cell = row.createCell((short) 3);
		cell.setCellValue("維護措施");
		cell.setCellStyle(style);
		cell = row.createCell((short) 4);
		// cell.setCellValue("年齡");
		// cell.setCellStyle(style);
		// cell = row.createCell((short) 3);
		// cell.setCellValue("生日");
		// cell.setCellStyle(style);

		for (int i = 0; i < list.size(); i++) {
			row = sheet.createRow((int) i + 1);
			User user = (User) list.get(i);
			// 第四步,建立單元格,並設定值
			row.createCell((short) 0).setCellValue(user.getName());
			row.createCell((short) 1).setCellValue(user.getArea());
			row.createCell((short) 2).setCellValue(user.getDate());
			row.createCell((short) 3).setCellValue(user.getCuoshi());
			// row.createCell((short) 2).setCellValue((double) stu.getAge());
			// cell = row.createCell((short) 3);
			// cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu
			// .getBirth()));
		}
		// 第六步,將檔案存到指定位置
		try {
			FileOutputStream fout = new FileOutputStream(fileName + ".xls");
			// 選中專案右鍵,點選Refresh,即可顯示匯出檔案
			wb.write(fout);
			fout.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

第二個:

package com.wbs.test;

public class User {
	
	String area ;
	
	String name;
	
	String date;
	
	String cuoshi;

	public String getArea() {
		return area;
	}

	public void setArea(String area) {
		this.area = area;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	public String getCuoshi() {
		return cuoshi;
	}

	public void setCuoshi(String cuoshi) {
		this.cuoshi = cuoshi;
	}
	
	

	
}

下載原始碼

相關推薦

java讀取修改word的內容儲存。

1.讀取word內容 2.修改要修改的內容 3.儲存word public Map readwriteWord(Map<String, String> map,String gcid,String deptid) { //查詢word模板

Java讀取匯出Word表格(Excel),匯出檔案Excel

看公司的同事很費勁的在一條一條地從Word中的表格複製貼上到Excel, 我從網上找個兩個demo給合在了一起,幫他解決了問題。最下方有原始碼。 一個兩個類 第一個: package com.wbs.test; import java.io.FileInputStream

java/poi讀取word替換word的文字內容,向word插入圖片的操作

先貼程式碼,注:部分程式碼源自網路其他前輩的文章,這裡只是做一個功能整合。 package fcjTool; import java.io.IOException; import java.io.InputStream; import org.ap

java循環取出word table表格所有的值

word//往表格裏面插入值或者打開表格填寫<%@ page language="java" import="java.util.*, java.awt.*" pageEncoding="gb2312"%><%@page import="com.zhuozhengsoft.pageoffic

將頁面表格數據導出excel格式的文件(vue)

表示 webpack ade bpa upd 調用 clas 使用 目錄   近期由於項目需要,需要將頁面中的表格數據導出excel格式的文件,折騰了許久,在網上各種百度,雖然資料不少,但是大都不全,踩了許多坑,總算是皇天不負有心人,最後圓滿解決了。   1、安裝相關依賴

word表格後面緊跟的空白頁如何刪除

在使用word時,有時我們在文章中插入了一個表格。這個表格位於文章最後,且佔滿最後一頁。這時候,word會在表格後面再次新增一個空白頁。 這個空白頁上除了一個段落標記外沒有任何東西。並且在列印時,這個空白頁也會打印出來。那麼如何刪除這個空白頁呢? 方法有兩個: 方法一:在

com4j學習(1):Java操作Visio之Java讀取Visio圖形關係並存儲到XML檔案

前言: MicroSoft Visio是微軟旗下一款非常非常出色的繪圖軟體,可以用來繪製各種各樣的圖形(如流程圖、UML、工程圖等)。現在有這樣一個需求,我們想讀取visio中的圖形的形狀、屬性、連線關係等到程式中(java、c++、python都行),這樣我

java 用POI向word寫入檔案

專案涉及到要向一個word中插入一段文字,用到了apache的POI元件,可以很流暢地向已有word中寫入文字。 (這裡只是向word末尾加文字,不支援指定位置插入) 首先要下載apache POI的jar們,下載地址:https://poi.apache.org/down

word表格相關內容

 在工作中,一些自動化的裝置或者自動記錄測量的一起都具備自動收集資料後,將其匯出的功能。而匯出的檔案中,txt是最常用的。對於辦公人員來說,excel是最常用的資料處理軟體,那麼今天就來講一下,如何將txt資料匯入到excel中。

Java】從內部類訪問變數,需要宣告final

Cannot refer to a non-final variable ‘result’ inside an inner class defined in a different method 從內部類中訪問變數’result’,需要宣告為final 這

[原始碼和文件分享]根據PE檔案格式從匯出獲取指定匯出函式的地址

背景 瞭解 PE 檔案格式,對於做一些資料分析都是比較重要的基礎。在 PE 檔案格式中,理解匯入表以及匯出表的工作原理,又是重中之重。理解了 PE 格式的匯入表,就可以修改 PE 格式進行 DLL 注入,也可以修改匯入表實現 API HOOK 等。理解了 PE 格式的匯出表,可以不需要 WIN3

Word使用帶圈數字正文編號

有時需要用帶圈數字為正文編號,但word預設的編號格式庫裡沒有這種樣式。上網查了很多,大多說要啟用朝鮮語,但我的word 2007中只有“朝鮮語(韓國)”,沒有”朝鮮語“,而且啟用並重啟後也沒有出現帶圈數字的編號格式。 基本上網友說的方法都用盡了,沒有找到理解的解決辦法,但

Tensorflow讀取使用預訓練模型:以inception_v3

在使用Tensorflow做讀取並finetune的時候,發現在讀取官方給的inception_v3預訓練模型總是出現各種錯誤,現記錄其正確的讀取方式和各種錯誤做法: 關鍵程式碼如下: import tensorflow as tf import ten

java servlet 讀寫mysql儲存的二進位制檔案

資料準備 CREATE TABLE stuinfo ( id INT (11) NOT NULL auto_increment, NAME VARCHAR (10) DEFAULT NULL, content LONGTEXT, image LONGBLOB, P

截圖轉換高清高解析度的方法,word插入的圖片轉換高解析度的方法

由於投論文要求影象都是最少300dpi,而有的圖片是直接截來的,所以需要處理一下,網上查閱了一番,得到如下的解決辦法,先簡要介紹,然後介紹具體步驟,每個步驟再詳解。 整體流程: QQ截圖——貼上至word——匯出dpf——剪裁只剩圖片——匯出為指定格式圖片(設定中選擇

java實現starteam配置庫checkout對應的檔案

1、所屬jar包:starteam-sdk-5.2.jar 2、樣例程式碼 package com.comtop.qcms.base.starteam; import java.io.IOException; import com.comtop.qcms.base.util

Chimm.Excel —— 使用Java 操作 excel 模板檔案生成 excel 文件

# Chimm.Excel —— 設定模板,填充資料,就完事兒了~ ``` _____ _ _ _____ _ / __ \ | (_)

java讀取word表格存入到mysql資料庫例項

將D://word_export.doc(word2003)檔案中表格資料讀取出來並存入到資料庫中。表格資料如下圖所示: 20064001 劉景玉 1987-01-25 男 河南商丘 20064002 李會 1986-05-30 男

java讀取Excel表格的數據

bubuko str 需求 equal read sta alt 表格 nbsp 1、需求 用java代碼讀取hello.xls表格中的數據 2、hello.xls表格 3、java代碼 package com.test; import java.io.File;

java讀取excel檔案內容,讀取到的內容寫入到另一檔案

需要匯入的jar包下載地址https://pan.baidu.com/s/16cTpUfx0KvKkbGYkXAUKMA 程式碼:ReadExcel.java //信1605-3 20163432 張運濤 package domain; import java.io.File; im