java利用poi開源庫實現將資料集寫入Excel表格並儲存在本地
阿新 • • 發佈:2019-01-13
一,目前主流的關於讀寫excel表格的有poi 和jxl開源庫,這裡只是簡單的介紹如何poi將資料集寫進Excel表格,並存進本地。
二,官網下載poi的相關jar包,網址 http://poi.apache.org/download.html#POI-4.0.1
記住下載.zip字尾的 ,.tar.gz是在linux上使用的
三,新建java 專案,將名為poi的jar包匯入專案中
新建實體類 BusinessInfo 生成相關方法
package pojo; import java.io.Serializable; public class BusinessInfo implements Serializable { private static final long serialVersionUID = 6072371965678419954L; private String registNumber;// 企業註冊號 private String businessName;// 企業名稱 public BusinessInfo() { super(); // TODO Auto-generated constructor stub } public BusinessInfo(String registNumber, String businessName) { super(); this.registNumber = registNumber; this.businessName = businessName; } public String getRegistNumber() { return registNumber; } public void setRegistNumber(String registNumber) { this.registNumber = registNumber; } public String getBusinessName() { return businessName; } public void setBusinessName(String businessName) { this.businessName = businessName; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((businessName == null) ? 0 : businessName.hashCode()); result = prime * result + ((registNumber == null) ? 0 : registNumber.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BusinessInfo other = (BusinessInfo) obj; if (businessName == null) { if (other.businessName != null) return false; } else if (!businessName.equals(other.businessName)) return false; if (registNumber == null) { if (other.registNumber != null) return false; } else if (!registNumber.equals(other.registNumber)) return false; return true; } @Override public String toString() { return "BusinessInfo [registNumber=" + registNumber + ", businessName=" + businessName + "]"; } }
新建工具類 ImageExcel 程式碼如下
package excel; import java.io.File; import java.io.FileOutputStream; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; 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.ss.util.CellRangeAddress; import pojo.BusinessInfo; public class ImageExcel { /** * 將資料儲存進Eacel中 * * @param list * 資料集合 * @param savePath * 儲存路徑 */ public void generateExcel(List<BusinessInfo> list, String savePath) { // 建立HSSFWorkbook物件(excel的文件物件) HSSFWorkbook workbook = new HSSFWorkbook(); // 建立新的sheet物件(excel的表單) HSSFSheet sheet = workbook.createSheet("工商店鋪資訊表"); sheet.setDefaultRowHeightInPoints(12);// 設定預設列高 sheet.setDefaultColumnWidth(40);// 設定預設列寬 // 在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("企業名稱"); for (int i = 0, len = list.size(); i < len; i++) { BusinessInfo businessInfo = list.get(i); HSSFRow row = sheet.createRow(i + 2); row.createCell(0).setCellValue(businessInfo.getRegistNumber()); row.createCell(1).setCellValue(businessInfo.getBusinessName()); } // 輸出Excel檔案 try { FileOutputStream fos = new FileOutputStream(new File(savePath)); workbook.write(fos); workbook.close(); fos.close(); System.out.println("生成excel文件成功"); } catch (Exception e) { e.printStackTrace(); System.out.println("生成excel文件失敗"); } } }
新建測試類 ImageExcelTest 程式碼如下
package test; import java.util.ArrayList; import java.util.List; import excel.ImageExcel; import pojo.BusinessInfo; public class ImageExcelTest { public static void main(String[] args) { ImageExcel imageExcel = new ImageExcel(); BusinessInfo bi1 = new BusinessInfo("10000001", "test1"); BusinessInfo bi2 = new BusinessInfo("10000002", "test2"); List<BusinessInfo> list = new ArrayList<BusinessInfo>(); list.add(bi1); list.add(bi2); String savePath = "D:/images/test.xls"; imageExcel.generateExcel(list, savePath); } }
四,執行結果