當前位置:
首頁 > 知識 > Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)


1、介紹

java實現文件的導入導出資料庫,目前在大部分系統中是比較常見的功能了,今天寫個小demo來理解其原理,沒接觸過的同學也可以看看參考下。

目前我所接觸過的導入導出技術主要有POI和iReport,poi主要作為一些數據批量導入資料庫,iReport做報表導出。另外還有jxl類似poi的方式,不過貌似很久沒跟新了,2007之後的office好像也不支持,這裡就不說了。


2、POI使用詳解

2.1 什麼是Apache POI?

Apache POI是Apache軟體基金會的開放源碼函式庫,POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。

2.2 POI的jar包導入

本次講解使用maven工程,jar包版本使用poi-3.14和poi-ooxml-3.14。目前最新的版本是3.16。因為3.15以後相關api有更新,部分操作可能不一樣,大家注意下。

Java實現文件批量導入導出實例(兼容xls,xlsx)

2.3 POI的API講解

2.3.1 結構


HSSF - 提供讀寫Microsoft Excel格式檔案的功能。

XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。

HWPF - 提供讀寫Microsoft Word格式檔案的功能。

HSLF - 提供讀寫Microsoft PowerPoint格式檔案的功能。

HDGF - 提供讀寫Microsoft Visio格式檔案的功能。

2.3.2 對象

本文主要介紹HSSF和XSSF兩種組件,簡單的講HSSF用來操作Office 2007版本前excel.xls文件,XSSF用來操作Office 2007版本後的excel.xlsx文件,注意二者的後綴是不一樣的。

HSSF在org.apache.poi.hssf.usermodel包中。它實現了Workbook 介面,用於Excel文件中的.xls格式


常用組件:

HSSFWorkbook excel的文檔對象

HSSFSheet excel的表單

HSSFRow excel的行

HSSFCell excel的格子單元

HSSFFont excel字體

HSSFDataFormat 日期格式

HSSFHeader sheet頭

HSSFFooter sheet尾(只有列印的時候才能看到效果)

樣式:

HSSFCellStyle cell樣式

輔助操作包括:

HSSFDateUtil 日期

HSSFPrintSetup 列印

HSSFErrorConstants 錯誤信息表

XSSF在org.apache.xssf.usemodel包,並實現Workbook介面,用於Excel文件中的.xlsx格式


常用組件:

XSSFWorkbook excel的文檔對象

XSSFSheet excel的表單

XSSFRow excel的行

XSSFCell excel的格子單元

XSSFFont excel字體

XSSFDataFormat 日期格式

和HSSF類似;

2.3.3 兩個組件共同的欄位類型描述

其實兩個組件就是針對excel的兩種格式,大部分的操作都是相同的。

Java實現文件批量導入導出實例(兼容xls,xlsx)

2.3.4 操作步驟

以HSSF為例,XSSF操作相同。

首先,理解一下一個Excel的文件的組織形式,一個Excel文件對應於一個workbook(HSSFWorkbook),一個workbook可以有多個sheet(HSSFSheet)組成,一個sheet是由多個row(HSSFRow)組成,一個row是由多個cell(HSSFCell)組成。

Java實現文件批量導入導出實例(兼容xls,xlsx)


3、代碼操作

3.1 效果圖

慣例,貼代碼前先看效果圖

Excel文件兩種格式各一個:

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

代碼結構:

Java實現文件批量導入導出實例(兼容xls,xlsx)

導入後:(我導入了兩遍,沒做校驗)

Java實現文件批量導入導出實例(兼容xls,xlsx)

導出效果:

Java實現文件批量導入導出實例(兼容xls,xlsx)

3.2 代碼詳解

這裡我以Spring+SpringMVC+Mybatis為基礎

Controller:

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Service

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

Java實現文件批量導入導出實例(兼容xls,xlsx)

3.3 導出文件api補充

大家可以看到上面service的代碼只是最基本的導出。

在實際應用中導出的Excel文件往往需要閱讀和列印的,這就需要對輸出的Excel文檔進行排版和樣式的設置,主要操作有合并單元格、設置單元格樣式、設置字體樣式等。

3.3.1 單元格合并

使用HSSFSheet的addMergedRegion()方法

Java實現文件批量導入導出實例(兼容xls,xlsx)

參數CellRangeAddress 表示合并的區域,構造方法如下:依次表示起始行,截至行,起始列, 截至列

Java實現文件批量導入導出實例(兼容xls,xlsx)

3.3.2 設置單元格的行高和列寬

Java實現文件批量導入導出實例(兼容xls,xlsx)

3.3.3 設置單元格樣式

1、創建HSSFCellStyle

Java實現文件批量導入導出實例(兼容xls,xlsx)

2、設置樣式

Java實現文件批量導入導出實例(兼容xls,xlsx)

3、將樣式應用於單元格

Java實現文件批量導入導出實例(兼容xls,xlsx)

3.3.4設置字體樣式

1、創建HSSFFont對象(調用HSSFWorkbook 的createFont方法)

Java實現文件批量導入導出實例(兼容xls,xlsx)

2、設置字體各種樣式

Java實現文件批量導入導出實例(兼容xls,xlsx)

3、將字體設置到單元格樣式

Java實現文件批量導入導出實例(兼容xls,xlsx)

大家可以看出用poi導出文件還是比較麻煩的,等下次在為大家介紹下irport的方法。

導出的api基本上就是這些,最後也希望上文對大家能有所幫助。


學習Java的同學注意了!!!

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群495273252,我們一起學Java!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java團長 的精彩文章:

Java靜態代理與動態代理模式的實現
淺談Java反射機制
JVM的內存區域劃分以及垃圾回收機制詳解
優質免費在線學習網站
深入理解Java常用類——StringBuilder

TAG:Java團長 |

您可能感興趣

SpreadJS ExcelIO實現伺服器端Excel導入導出
VirtualBox 6.0正式發布:支持虛擬機導出至Oracle Cloud架構
redis-cli pipe方式導入mysql sql查詢導出redisProtocol格式數據
eclipse如何導出WAR包
mongodb 如何導入導出備份恢復
imp/exp導入導出的一些錯誤
Python腳本將ABAQUS結果導出到excel的方法
在.Net Core WebAPI下給Swagger增加導出離線文檔功能
Pore X Tightening Mask(黑頭導出液)功效
LibreOffice 6.0即將發布:支持導出EPUB3格式
如何將數據從Hadoop導出到關係型和NoSQL資料庫?
Ian Goodfellow:生成對抗網路 GAN 的公式是怎樣推導出來的
滲透技巧——利用Masterkey離線導出Chrome瀏覽器中保存的密碼
開源工具Blender將增加glTF格式導入和導出
記一次悲慘的 excel 導出事件
入門MySQL資料庫導入與導出及重置root密碼
5分鐘4K視頻渲染導出僅需4分鐘:2019入門款MacBook Pro簡評
iOS取證技巧:在無損的情況下完整導出SQLite資料庫
滲透技巧——導出Chrome瀏覽器中保存的密碼
逆向資料庫 導出word文檔