POI和Java Excel Api匯入匯出----詳細到你不敢相信
來自:http://blog.csdn.net/jerehedu/article/details/45195359
一、介紹
當前B/S模式已成為應用開發的主流,而在企業辦公系統中,常常有客戶這樣子要求:你要把我們的報表直接用Excel開啟(電信系統、銀行系統)。或者是:我們已經習慣用Excel列印。這樣在我們實際的開發中,很多時候需要實現匯入、匯出Excel的應用。
目前,比較常用的實現Java匯入、匯出Excel的技術有兩種Jakarta POI和Java Excel
下面我就分別講解一下如何使用這兩個技術實現匯入、匯出Excel
二、使用Jakarta
POI匯入、匯出Excel
Jakarta POI 是一套用於訪問微軟格式文件的Java API。Jakarta POI有很多元件組成,其中有用於操作Excel格式檔案的HSSF和用於操作Word的HWPF,在各種元件中目前只有用於操作Excel的HSSF相對成熟。官方主頁http://poi.apache.org/index.html,API文件http://poi.apache.org/apidocs/index.html
2.1 環境配置
2.1.1下載jar
2.1.2加入jar包
將根目錄下的poi-3.6-20091214.jar和Lib目錄下三個通用包 commons-logging-1.1.jar junit-3.8.1.jar log4j-1.2.13.jar拷貝到專案的Lib下
2.2 Jakarta POI HSSF API元件
HSSF(用於操作Excel的元件)提供給使用者使用的物件在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel物件,樣式和格式,還有輔助操作。有以下幾種物件:
常用元件:
HSSFWorkbook excel的文件物件
HSSFSheet excel的表單
HSSFRow excel的行
HSSFCell excel的格子單元
HSSFFont excel字型
HSSFDataFormat 日期格式
HSSFHeader sheet頭
HSSFFooter sheet尾(只有列印的時候才能看到效果)
樣式:
HSSFCellStyle cell樣式
輔助操作包括:
HSSFDateUtil 日期
HSSFPrintSetup 列印
HSSFErrorConstants 錯誤資訊表
2.3 基本操作步驟
首先,理解一下一個Excel的檔案的組織形式,一個Excel檔案對應於一個workbook(HSSFWorkbook),一個workbook可以有多個sheet(HSSFSheet)組成,一個sheet是由多個row(HSSFRow)組成,一個row是由多個cell(HSSFCell)組成。
基本操作步驟:
1、用HSSFWorkbook開啟或者建立“Excel檔案物件”
2、用HSSFWorkbook物件返回或者建立Sheet物件
3、用Sheet物件返回行物件,用行物件得到Cell物件
4、對Cell物件讀寫。
下面來看一個動態生成Excel檔案的例子:
- //建立HSSFWorkbook物件
- HSSFWorkbook wb = new HSSFWorkbook();
- //建立HSSFSheet物件
- HSSFSheet sheet = wb.createSheet("sheet0");
- //建立HSSFRow物件
- HSSFRow row = sheet.createRow(0);
- //建立HSSFCell物件
- HSSFCell cell=row.createCell(0);
- //設定單元格的值
- cell.setCellValue("單元格中的中文");
- //輸出Excel檔案
- FileOutputStream output=new FileOutputStream("d:\\workbook.xls");
- wkb.write(output);
- output.flush();
HSSF讀取檔案同樣還是使用這幾個物件,只是把相應的createXXX方法變成了getXXX方法即可。可見只要理解了其中原理,不管是讀還是寫亦或是特定格式都可以輕鬆實現,正所謂知其然更要知其所以然。
2.4 匯出Excel應用例項
在2.3中我們寥寥幾行程式碼實際上就已經就是實現了匯出Excel一個簡單示例,下面我們在看如何實現匯出如圖所示的Excel表格?
程式碼如下:(實際開發中應封裝到業務層元件中,然後在控制層中呼叫。這裡直接寫在控制層元件,如Servlet的doGet/doPost方法或Struts框架的execute方法中)
- //建立HSSFWorkbook物件(excel的文件物件)
- HSSFWorkbook wb = new HSSFWorkbook();
- //建立新的sheet物件(excel的表單)
- HSSFSheet sheet=wkb.createSheet("成績表");
- //在sheet裡建立第一行,引數為行索引(excel的行),可以是0~65535之間的任何一個
- HSSFRow row1=sheet.createRow(0);
- //建立單元格(excel的單元格,引數為列索引,可以是0~255之間的任何一個
- HSSFCell cell=row1.createCell(0);
- //設定單元格內容
- cell.setCellValue("學員考試成績一覽表");
- //合併單元格CellRangeAddress構造引數依次表示起始行,截至行,起始列, 截至列
- sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
- //在sheet裡建立第二行
- HSSFRow row2=sheet.createRow(1);
- //建立單元格並設定單元格內容
- row2.createCell(0).setCellValue("姓名");
- row2.createCell(1).setCellValue("班級");
- row2.createCell(2).setCellValue("筆試成績");
- row2.createCell(3).setCellValue("機試成績");
- //在sheet裡建立第三行
- HSSFRow row3=sheet.createRow(2);
- row3.createCell(0).setCellValue("李明");
- row3.createCell(1).setCellValue("As178");
- row3.createCell(2).setCellValue(87);
- row3.createCell(3).setCellValue(78);
- //.....省略部分程式碼
- //輸出Excel檔案
- OutputStream output=response.getOutputStream();
- response.reset();
- response.setHeader("Content-disposition", "attachment; filename=details.xls");
- response.setContentType("application/msexcel");
- wkb.write(output);
- output.close();
- retrun null;
加下劃線這部分程式碼是B/S模式中採用的輸出方式,而不是輸出到本地指定的磁碟目錄。該程式碼表示將details.xls的Excel檔案通過應答實體(response)輸出給請求的客戶端瀏覽器,客戶端可儲存或直接開啟。
2.5 樣式設定
在實際應用中匯出的Excel檔案往往需要閱讀和列印的,這就需要對輸出的Excel文件進行排版和樣式的設定,主要操作有合併單元格、設定單元格樣式、設定字型樣式等。
2.5.1單元格合併
使用HSSFSheet的addMergedRegion()方法
- public int addMergedRegion(CellRangeAddress region)
引數CellRangeAddress 表示合併的區域,構造方法如下:
- CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
構造引數依次表示起始行,截至行,起始列, 截至列。示例程式碼參照2.4部分
2.5.2設定單元格的行高、列寬
- HSSFSheet sheet=wb.createSheet();
- sheet.setDefaultRowHeightInPoints(10);//設定預設列高sheet.setDefaultColumnWidth(20);//設定預設列寬
- //設定指定列的列寬,256 * 50這種寫法是因為width引數單位是單個字元的256分之一
- sheet.setColumnWidth(cell.getColumnIndex(), 256 * 50);
2.5.2單元格樣式
1、建立HSSFCellStyle
- HSSFCellStyle cellStyle=wkb.createCellStyle()
2、設定樣式
- // 設定單元格的橫向和縱向對齊方式,具體引數就不列了,參考HSSFCellStyle
- cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY);
- cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
- /* 設定單元格的填充方式,以及前景顏色和背景顏色
- 三點注意:
- 1.如果需要前景顏色或背景顏色,一定要指定填充方式,兩者順序無所謂;
- 2.如果同時存在前景顏色和背景顏色,前景顏色的設定要寫在前面;
- 3.前景顏色不是字型顏色。
- */
- //設定填充方式(填充圖案)
- cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS);
- //設定前景色
- cellStyle.setFillForegroundColor(HSSFColor.RED.index);
- //設定背景顏色
- cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);
- // 設定單元格底部的邊框及其樣式和顏色
- // 這裡僅設定了底邊邊框,左邊框、右邊框和頂邊框同理可設
- cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);
- cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);
- //設定日期型資料的顯示樣式
- cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
3、將樣式應用於單元格
- cell.setCellStyle(cellStyle);
- //將樣式應用到行,但有些樣式只對單元格起作用
- row.setRowStyle(cellStyle);
相關推薦
POI和Java Excel Api匯入匯出----詳細到你不敢相信
來自:http://blog.csdn.net/jerehedu/article/details/45195359 一、介紹 當前B/S模式已成為應用開發的主流,而在企業辦公系統中,常常有客戶這樣子要求:你要把我們的報表直接用
java poi方式的excel的 匯入匯出demo
由於專案中實際的程式碼比較複雜,這裡就參考下簡單版的匯入匯出函式 匯出excel檔案 其中 response : 響應物件,用於直接返回給瀏覽器。 list: 內容資料,遍歷填充單元格。 filename: 檔名。 title: excel第一行的標題陣列。
POI-Excel匯入匯出 詳細實現程式碼
1.介面效果: 1)點選批量匯入,彈出檔案選擇框,選擇檔案,點選開啟,檔案開始上傳。 &nb
【Java】SpringMVC整合poi實現excel的匯入匯出
2.特點:結構: HSSF - 提供讀寫Microsoft Excel格式檔案的功能。 XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。 HWPF - 提供讀寫Microsoft Word格式檔案的功能。 HSLF - 提供讀寫Microsof
java之poi操作excel-批量匯入匯出
上一篇博文介紹了poi操作excel的基本讀寫操作後,接下來,介紹一下在專案中的實際用途:批量匯入、批量匯出功能。因為重點知識介紹批量匯入匯出excel功能,故而專案整體的搭建後臺用jdbc與struts2,前端頁面用jquery-easyui實現(其實也可以整合到s
java 中Excel的匯入匯出
部分轉發原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨點的名字 的內容 java程式碼中的匯入匯出 首先在d盤建立一個xlsx檔案,然後再進行一系列操作 package com.aynu.excel; import j
SpringBoot整合poi實現Excel的 匯入/匯出
新增依賴 <!-- excel匯出工具 --> <dependency> <groupId>org.apache.poi</groupId>
Sqoop之java API匯入匯出資料
折騰了一下午終於成功了,這裡做一下總結 專案依賴: <dependency> <groupId>org.apache.sqoop</groupId> <artifactId>sqoop-client</arti
利用POI實現Excel的匯入匯出
在專案開中,我們經常需要用excel來匯入匯出資料,而POI技術是實現我們需求的一個選擇。 POI支援office的所有版本 POI全稱 PoorObfuscation Implementation,直譯為“可憐的模糊實現”,利用POI介面可以通過JAVA操作Micro
Java實現對Excel檔案匯入匯出
1.匯入jar包 2.建立entity類 public class Book { private String name; private double price; private String author; public String getNa
Poi的Excel的匯入匯出 支援2007
需要匯入 poi-3.7.jar commons-io-2.4.jar Excel2003匯出 import java.io.File; import java.io.FileOutputStream; import org.apache.commons.io.FileU
Oracle11g和oracle10g之間的匯入/匯出
轉自: https://blog.csdn.net/qq_16884279/article/details/48026605 一:oracle的IMP/EMP特性: Oracle的imp/exp元件的一個操作原則就是向下相容,且有一些規則: 規則
thinkphp5做excel表匯入匯出
public function excel(){ if (request()->isPost()) { Loader::import('PHPExcel.PHPExcel'); Lo
用poi讀寫Excel並匯入資料
首先寫個工具類 用來讀寫Excel的 ... import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util
php-excel資料匯入匯出
備註:基於第三方類庫phpoffice/phpexcel github:https://github.com/PHPOffice/PHPExcel/ 前端:excel.html <form method="post" action="excel.php" enct
JDK的安裝和JAVA環境變數的配置詳細教程
最近在做學校老師的專案,寫一個微信小程式,在這裡需要用到Java作為後臺語言連線oracle資料庫。首先就是要配置Java環境。 那麼就讓我從零開始介紹一下Java環境的配置吧!! 1.JDK的下載和安裝: 首先什麼是JDK呢? JDK是提供給Java開發人員使
mongodb基本命令和Java操作API示例
1.Mongo3.2 java API示例:http://www.cnblogs.com/zhangchaoyang/articles/5146508.html2.MongoDB基本命:http://www.cnblogs.com/xusir/archive/2012/12/
js實現Excel檔案匯入匯出、利用 js-xlsx 實現 Excel 檔案匯入匯出-功能示例
1.匯入功能實現 下載js-xlsx到dist複製出xlsx.full.min.js引入到頁面中 然後通過FileReader物件讀取檔案利用js-xlsx轉成json資料 <!DOCTYPE html> <html> <head>
js-xlsx實現Excel的匯入匯出功能
一:匯入功能 讀取excel的多個sheet資料 <script type="text/javascript" src="js/xlsx.core.min.js"></script> <table style="width
web專案實現Excel資料匯入匯出
由於專案要求,需要實現一個數據庫資訊匯出為Excel檔案,並能將Excel檔案中的資訊匯入資料庫的功能,網上找了一下資料,發現大都只涉及到Excel檔案的簡單操作,所以特地在此分享了自己寫的兩個簡單的Web端Excel檔案匯入匯出的例子。 涉