POI+Maven實現資料匯出到Excel
關於poi的使用將資料庫中的資料匯出到Excel中詳解
1.首先要匯入poi的maven座標
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
2.使用工具類進行下載封裝,並且完成下載後單元格的樣式設定,寬度隨著單元格內容長度自適應,以及Excel標題的設定。
import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRichTextString; 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.hssf.util.CellRangeAddress; import org.apache.poi.hssf.util.HSSFColor; public class ExportExcel{ // 顯示的匯出表的標題 private String title; // 匯出表的列名 private String[] rowName; private List<Object[]> dataList = new ArrayList<Object[]>(); HttpServletResponse response; // 構造方法,傳入要匯出的資料 public ExportExcel(String title, String[] rowName, List<Object[]> dataList) { this.dataList = dataList; this.rowName = rowName; this.title = title; } /* * 匯出資料 */ public void export(OutputStream out) throws Exception { try { HSSFWorkbook workbook = new HSSFWorkbook(); // 建立工作簿物件 HSSFSheet sheet = workbook.createSheet(title); // 建立工作表 // 產生表格標題行 HSSFRow rowm = sheet.createRow(0); HSSFCell cellTiltle = rowm.createCell(0); // sheet樣式定義【getColumnTopStyle()/getStyle()均為自定義方法 - 在下面 - 可擴充套件】 HSSFCellStyle columnTopStyle = this.getColumnTopStyle(workbook);// 獲取列頭樣式物件 HSSFCellStyle style = this.getStyle(workbook); // 單元格樣式物件 /* * sheet.addMergedRegion(new * CellRangeAddress(0,dataList.get(0).length-1 , 0, * (rowName.length-1))); */// 合併單元格 sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, dataList.get(0).length - 1));// 列行 cellTiltle.setCellStyle(style); cellTiltle.setCellValue(title); // 定義所需列數 int columnNum = rowName.length; HSSFRow rowRowName = sheet.createRow(0); // 在索引2的位置建立行(最頂端的行開始的第二行) // 將列頭設定到sheet的單元格中 for (int n = 0; n < columnNum; n++) { HSSFCell cellRowName = rowRowName.createCell(n); // 建立列頭對應個數的單元格 cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); // 設定列頭單元格的資料型別 HSSFRichTextString text = new HSSFRichTextString(rowName[n]); cellRowName.setCellValue(text); // 設定列頭單元格的值 cellRowName.setCellStyle(columnTopStyle); // 設定列頭單元格樣式 } // 將查詢出的資料設定到sheet對應的單元格中 for (int i = 0; i < dataList.size(); i++) { Object[] obj = dataList.get(i);// 遍歷每個物件 HSSFRow row = sheet.createRow(i + 2);// 建立所需的行數(從第三行開始寫資料) for (int j = 0; j < obj.length; j++) { HSSFCell cell = null; // 設定單元格的資料型別 if (j == 0) { cell = row.createCell(j, HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(i); } else { cell = row.createCell(j, HSSFCell.CELL_TYPE_STRING); if (obj[j] != null) { cell.setCellValue(obj[j].toString()); } } cell.setCellStyle(style); // 設定單元格樣式 } } // 讓列寬隨著匯出的列長自動適應 for (int colNum = 0; colNum < dataList.get(1).length; colNum++) { int columnWidth = sheet.getColumnWidth(colNum) / 256; for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) { HSSFRow currentRow; // 當前行未被使用過 if (sheet.getRow(rowNum) == null) { currentRow = sheet.createRow(rowNum); } else { currentRow = sheet.getRow(rowNum); } /* * if (currentRow.getCell(colNum) != null) { HSSFCell * currentCell = currentRow.getCell(colNum); if * (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) * { int length = * currentCell.getStringCellValue().getBytes().length; if * (columnWidth < length) { columnWidth = length; } } } */ if (currentRow.getCell(colNum) != null) { HSSFCell currentCell = currentRow.getCell(colNum); if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) { int length = 0; try { length = currentCell.getStringCellValue() .getBytes().length; } catch (Exception e) { e.printStackTrace(); } if (columnWidth < length) { columnWidth = length; } } } } if (colNum == 0) { sheet.setColumnWidth(colNum, (columnWidth - 2) * 256); } else { sheet.setColumnWidth(colNum, (columnWidth + 4) * 256); } } if (workbook != null) { try { workbook.write(out); } catch (IOException e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } finally { out.close(); } } /* * 列頭單元格樣式 */ public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) { // 設定字型 HSSFFont font = workbook.createFont(); // 設定字型大小 font.setFontHeightInPoints((short) 11); // 字型加粗 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 設定字型名字 font.setFontName("Courier New"); // 設定樣式; HSSFCellStyle style = workbook.createCellStyle(); // 設定底邊框; style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 設定底邊框顏色; style.setBottomBorderColor(HSSFColor.BLACK.index); // 設定左邊框; style.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 設定左邊框顏色; style.setLeftBorderColor(HSSFColor.BLACK.index); // 設定右邊框; style.setBorderRight(HSSFCellStyle.BORDER_THIN); // 設定右邊框顏色; style.setRightBorderColor(HSSFColor.BLACK.index); // 設定頂邊框; style.setBorderTop(HSSFCellStyle.BORDER_THIN); // 設定頂邊框顏色; style.setTopBorderColor(HSSFColor.BLACK.index); // 在樣式用應用設定的字型; style.setFont(font); // 設定自動換行; style.setWrapText(false); // 設定水平對齊的樣式為居中對齊; style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 設定垂直對齊的樣式為居中對齊; style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); return style; } /* * 列資料資訊單元格樣式 */ public HSSFCellStyle getStyle(HSSFWorkbook workbook) { // 設定字型 HSSFFont font = workbook.createFont(); // 設定字型大小 // font.setFontHeightInPoints((short)10); // 字型加粗 // font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 設定字型名字 font.setFontName("Courier New"); // 設定樣式; HSSFCellStyle style = workbook.createCellStyle(); // 設定底邊框; style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 設定底邊框顏色; style.setBottomBorderColor(HSSFColor.BLACK.index); // 設定左邊框; style.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 設定左邊框顏色; style.setLeftBorderColor(HSSFColor.BLACK.index); // 設定右邊框; style.setBorderRight(HSSFCellStyle.BORDER_THIN); // 設定右邊框顏色; style.setRightBorderColor(HSSFColor.BLACK.index); // 設定頂邊框; style.setBorderTop(HSSFCellStyle.BORDER_THIN); // 設定頂邊框顏色; style.setTopBorderColor(HSSFColor.BLACK.index); // 在樣式用應用設定的字型; style.setFont(font); // 設定自動換行; style.setWrapText(false); // 設定水平對齊的樣式為居中對齊; style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 設定垂直對齊的樣式為居中對齊; style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); return style; } }
3.使用方式
List<Map<String, Object>> list = registrationInformationDao .findRegistrationInformation1(map);//獲取資料 List<Object[]> dataList = new ArrayList<Object[]>(); Object[] objects0 = new Object[list.get(0).size()+1]; dataList.add(objects0); Map<String, Object> map2 = list.get(0); Set<String> keySet = map2.keySet(); int m = 1; for (String key : keySet) { dataList.get(0)[m++] = key; } for (int i = 0; i < list.size(); i++) { Object[] objects = new Object[list.get(i).size()+1]; dataList.add(objects); int j = 1; Map<String, Object> map3 = list.get(i); Set<String> keySet1 = map3.keySet(); for (String key : keySet1) { dataList.get(i+1)[j++] = map3.get(key); } } // 使用流將資料匯出 OutputStream out = null; try { // 防止中文亂碼 Parament findByName = paramentDao.findByName("export_name"); String headStr = "attachment; filename=\"" + new String((findByName.getParament_value()+/*下載後的檔名*/".xls").getBytes("gb2312"), "ISO8859-1") + "\""; response.setContentType("octets/stream"); response.setContentType("APPLICATION/OCTET-STREAM"); response.setHeader("Content-Disposition", headStr); out = response.getOutputStream(); ExportExcelSeedBack ex = new ExportExcelSeedBack(findByName.getParament_value(),/*表的標題*/ new String[]{findByName.getParament_value()/*內容標題*/}, dataList/*資料準備 ---資料型別為List<Object[]>*/); ex.export(out); } catch (Exception e) { e.printStackTrace(); }
相關推薦
POI+Maven實現資料匯出到Excel
關於poi的使用將資料庫中的資料匯出到Excel中詳解 1.首先要匯入poi的maven座標 <dependency> <groupId>org.apache.poi</groupId>
java使用poi包實現資料匯出
匯出資料可以寫成一個工具類,具體程式碼如下: package com.kanzhun.phoenix.admin.util; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFCo
SpringBoot整合POI實現檔案匯出Excel,匯入Excel更新Mysql資料庫資料
上傳功能 轉載自https://blog.csdn.net/xyy1028/article/details/79054749原創寫的非常好,但是每個人都有自己的業務邏輯;所以在研究了一點之後,打上註釋,方便新手理解,同時也方便自己記憶;專案目錄applicat
JAVA 使用 POI實現資料匯出到Excel
前言: 人生中第一次釋出部落格,怎麼說還是有點緊張的。希望各位看官多多支援~~~!引入: 就在上個禮拜,專案中有一個需求就是把一些資料匯出到Excel中,並且要求Excel要按照規定的內容和排版顯示匯出來的資料。 當時看到這個需求內心還是有點小壓力的,畢竟剛
Vue+element UI實現表格資料匯出Excel元件
介紹 這是一個可以將頁面中的表格資料匯出為Excel檔案的功能元件,該元件一般與表格一起使用,將表格資料傳給元件,然後通過點選元件按鈕可將表格中的資料匯出成Excel檔案。 使用方法 由於封裝該元件內部引用了xlsx.js,file-saver.js和elementUI,因此在使用該元件時,請先安裝如下
js 實現純前端將資料匯出excel。chome瀏覽器 親測有效。
有了新的需求 所以就瞭解下怎麼用js 直接匯出excel文件。 html程式碼 <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" cont
springboot實現資料庫中資料匯出Excel功能
功能介紹 網上查找了一堆的資料匯出程式碼,可能是自己基礎比較薄弱的原因還是別的什麼原因,導致一直沒有執行成功,就算是執行成功的,結果也是差強人意。在此總結一下自己借鑑別人已經經過自己整合
python實現資料匯出到excel--普通格式
python實現資料匯出到excel–普通格式 此文是在django框架下編寫,從資料庫中獲取資料使用的是django-orm 用python匯出資料到excel,簡單到爆!(普通的exce
js 實現純前端將資料匯出excel兩種方式,親測有效
由於專案需要,需要在不呼叫後臺介面的情況下,將json資料匯出到excel表格,參考了好多資料以及很多大佬寫的部落格終於實現,相容chrome沒問題,其他還沒有測試過,這邊介紹兩種實現方式,並附上程式碼和gif動圖,博主不才還望輕噴方法一將table標籤,包括tr、td等對j
Java利用POI實現匯入匯出Excel表格示例程式碼
介紹Jakarta POI 是一套用於訪問微軟格式文件的Java API。Jakarta POI有很多元件組成,其中有用於操作Excel格式檔案的HSSF和用於操作Word的HWPF,在各種元件中目前只有用於操作Excel的HSSF相對成熟。官方主頁http://poi.ap
C#實現匯入匯出Excel資料的兩種方法詳解
這篇文章主要為大家詳細介紹了C#匯入匯出Excel資料的兩種方法,具有一定的參考價值,感興趣的小夥伴們可以參考一下本文為大家分享了C#匯入匯出Excel資料的具體程式碼,供大家參考,具體內容如下注:對於實體類物件最好新建一個並且繼承原有實體類,這樣可以將型別進行修改;方法一:
使用POI把資料匯出excel表
在web開發中,有一個經典的功能,就是資料的匯入匯出。特別是資料的匯出,在生產管理或者財務系統中用的非常普遍,因為這些系統經常要做一些報表列印的工作。而資料匯出的格式一般是EXCEL。 現在主流的操作Excel檔案的開源工具有很多,用得比較
POI實現java匯出Excel功能
import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel
有關Java從資料庫查詢出的資料匯出Excel POI分頁功能總結
這幾天一直在做Java從資料庫查詢出的資料匯出Excel 的功能;做著做著發現: 當 row 超過65535的時候會報異常,該怎麼解決呢? 首先宣告一下,我的專案是基於Struts+ spring + mybatis的:以下方法僅供參考! 那麼我們先從jsp傳值開始看起吧
IE中在js中將查詢出的資料匯出excel表格
<input style="width: 70px; height: 22px;margin-left: 10%;font-family: \"微軟雅黑\" ; font-size: 12px; color:#2587D2 " type="button" onclick="move('exec
頁面資料匯出Excel要點
在使用資料匯出的時候,後臺的程式碼可以自己寫根據類或者根據網上開源的工具來生成Excel檔案,需要注意的是,使用get和post的方式都可以來獲取到Excel檔案 使用get方式: 可以將查詢引數用key=value的方式傳到後臺,後臺使用request.getParameter
檢索資料匯出Excel
在前端進行資料檢索時,通常會將根據條件檢索到某個資料的列表排序,而這種資訊對於使用者來說有的時候會很不方便,因此需要將查詢結果匯出到excel檔案中,方便使用者進行檢視對比; 步驟一:呼叫GetQueryIdByCondition獲取到
js資料匯出excel
<html> <meta charset="utf-8"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <scrip
JSON資料匯出Excel
1、下載外掛 1.1、百度雲盤下載:https://pan.baidu.com/s/1WSCTS3auENWJj-aO2gJtww 提取碼: ijq3 1.2、引入jsonExportExcel.js <scrip
js table資料匯出excel檔案
前言 百度了幾篇有關的教程,都差不多甚至可以說是完全相同;在這裡也只是精簡、記錄一下。 程式碼 表格轉換成excel並下載 (document).ready(function () {