1. 程式人生 > >POI和Java Excel Api匯入匯出----詳細到你不敢相信

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檔案的例子:

複製程式碼
  1. //建立HSSFWorkbook物件  
  2. HSSFWorkbook wb = new HSSFWorkbook();  
  3. //建立HSSFSheet物件  
  4. HSSFSheet sheet = wb.createSheet("sheet0");  
  5. //建立HSSFRow物件  
  6. HSSFRow row = sheet.createRow(0);  
  7. //建立HSSFCell物件  
  8. HSSFCell cell=row.createCell(0);  
  9. //設定單元格的值  
  10. cell.setCellValue("單元格中的中文");  
  11. //輸出Excel檔案  
  12. FileOutputStream output=new FileOutputStream("d:\\workbook.xls");  
  13. wkb.write(output);  
  14. output.flush();  
複製程式碼

  HSSF讀取檔案同樣還是使用這幾個物件,只是把相應的createXXX方法變成了getXXX方法即可。可見只要理解了其中原理,不管是讀還是寫亦或是特定格式都可以輕鬆實現,正所謂知其然更要知其所以然。

2.4 匯出Excel應用例項

   在2.3中我們寥寥幾行程式碼實際上就已經就是實現了匯出Excel一個簡單示例,下面我們在看如何實現匯出如圖所示的Excel表格?

  程式碼如下:(實際開發中應封裝到業務層元件中,然後在控制層中呼叫。這裡直接寫在控制層元件,如Servlet的doGet/doPost方法或Struts框架的execute方法中)

複製程式碼
  1. //建立HSSFWorkbook物件(excel的文件物件)  
  2.       HSSFWorkbook wb = new HSSFWorkbook();  
  3. //建立新的sheet物件(excel的表單)  
  4. HSSFSheet sheet=wkb.createSheet("成績表");  
  5. //在sheet裡建立第一行,引數為行索引(excel的行),可以是0~65535之間的任何一個  
  6. HSSFRow row1=sheet.createRow(0);  
  7. //建立單元格(excel的單元格,引數為列索引,可以是0~255之間的任何一個  
  8. HSSFCell cell=row1.createCell(0);  
  9.       //設定單元格內容  
  10. cell.setCellValue("學員考試成績一覽表");  
  11. //合併單元格CellRangeAddress構造引數依次表示起始行,截至行,起始列, 截至列  
  12. sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));  
  13. //在sheet裡建立第二行  
  14. HSSFRow row2=sheet.createRow(1);      
  15.       //建立單元格並設定單元格內容  
  16.       row2.createCell(0).setCellValue("姓名");  
  17.       row2.createCell(1).setCellValue("班級");      
  18.       row2.createCell(2).setCellValue("筆試成績");  
  19. row2.createCell(3).setCellValue("機試成績");      
  20.       //在sheet裡建立第三行  
  21.       HSSFRow row3=sheet.createRow(2);  
  22.       row3.createCell(0).setCellValue("李明");  
  23.       row3.createCell(1).setCellValue("As178");  
  24.       row3.createCell(2).setCellValue(87);      
  25.       row3.createCell(3).setCellValue(78);      
  26.   //.....省略部分程式碼  
  27. //輸出Excel檔案  
  28.     OutputStream output=response.getOutputStream();  
  29.     response.reset();  
  30.     response.setHeader("Content-disposition", "attachment; filename=details.xls");  
  31.     response.setContentType("application/msexcel");          
  32.     wkb.write(output);  
  33.     output.close();  
  34. retrun null;  
複製程式碼

  加下劃線這部分程式碼是B/S模式中採用的輸出方式,而不是輸出到本地指定的磁碟目錄。該程式碼表示將details.xls的Excel檔案通過應答實體(response)輸出給請求的客戶端瀏覽器,客戶端可儲存或直接開啟。

2.5 樣式設定

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

  2.5.1單元格合併

    使用HSSFSheet的addMergedRegion()方法

  1. public int addMergedRegion(CellRangeAddress region)  

    引數CellRangeAddress 表示合併的區域,構造方法如下:

  1. CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)  

  構造引數依次表示起始行,截至行,起始列, 截至列。示例程式碼參照2.4部分

2.5.2設定單元格的行高、列寬

複製程式碼
  1. HSSFSheet sheet=wb.createSheet();  
  2. sheet.setDefaultRowHeightInPoints(10);//設定預設列高sheet.setDefaultColumnWidth(20);//設定預設列寬  
  3. //設定指定列的列寬,256 * 50這種寫法是因為width引數單位是單個字元的256分之一  
  4. sheet.setColumnWidth(cell.getColumnIndex(), 256 * 50);  
複製程式碼

  2.5.2單元格樣式

  1、建立HSSFCellStyle

  1. HSSFCellStyle cellStyle=wkb.createCellStyle()  

  2、設定樣式

複製程式碼
  1. // 設定單元格的橫向和縱向對齊方式,具體引數就不列了,參考HSSFCellStyle  
  2.  cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY);  
  3.  cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  
  4.  /* 設定單元格的填充方式,以及前景顏色和背景顏色 
  5.   三點注意: 
  6.   1.如果需要前景顏色或背景顏色,一定要指定填充方式,兩者順序無所謂; 
  7.   2.如果同時存在前景顏色和背景顏色,前景顏色的設定要寫在前面; 
  8.   3.前景顏色不是字型顏色。 
  9.  */  
  10.  //設定填充方式(填充圖案)  
  11.  cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS);  
  12.  //設定前景色  
  13.  cellStyle.setFillForegroundColor(HSSFColor.RED.index);  
  14.  //設定背景顏色  
  15.  cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);  
  16.  // 設定單元格底部的邊框及其樣式和顏色  
  17.  // 這裡僅設定了底邊邊框,左邊框、右邊框和頂邊框同理可設  
  18.  cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);  
  19.  cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);  
  20.  //設定日期型資料的顯示樣式  
  21.  cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));    
複製程式碼

  3、將樣式應用於單元格

複製程式碼
  1. cell.setCellStyle(cellStyle);  
  2. //將樣式應用到行,但有些樣式只對單元格起作用  
  3. row.setRowStyle(cellStyle);  

相關推薦

POIJava 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

javapoi操作excel-批量匯入匯出

    上一篇博文介紹了poi操作excel的基本讀寫操作後,接下來,介紹一下在專案中的實際用途:批量匯入、批量匯出功能。因為重點知識介紹批量匯入匯出excel功能,故而專案整體的搭建後臺用jdbc與struts2,前端頁面用jquery-easyui實現(其實也可以整合到s

javaExcel匯入匯出

部分轉發原作者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

PoiExcel匯入匯出 支援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

Oracle11goracle10g之間的匯入/匯出

轉自: 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檔案匯入匯出的例子。         涉