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