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

【轉載】https://blog.csdn.net/u013322876/article/details/72859089

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基本上就是這些,最後也希望上文對大家能有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章