結合struts2實現的通用匯出excel實現詳細介紹
step1
package @@.bcp.report.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* @date: 2012-4-28
* @time: 16:38:06
* @desc:匯出報表資料引數配置類
*/
public class ReportConfig {
/* 上行報表查詢引數配置 */
public static final String reportNameAccept = "上行簡訊查詢";// 報表名稱
public static final String reportHeadAccept = null;// 報表頭
public static final String reportTailAccept = null;// 報表尾
// 設定報表欄位名稱
public static HashMap<String,HashMap<String,String>> getRecordName() {
/* 存放所有報表物件 */
HashMap<String,HashMap<String,String>> allRecordName = new HashMap<String,HashMap<String,String>> ();
/* 1.上行報表 */
/* 存放上行報表欄位名稱 */
HashMap acceptReport = new HashMap();
acceptReport.put("業務登記號","regId");
acceptReport.put("sp業務號","operId");
acceptReport.put("手機號碼","phoneId");
acceptReport.put("簡訊內容","reContent");
acceptReport.put("狀態","flag");
acceptReport.put("時間","reTime");
/* 存放上行報表欄位物件acceptReport到allRecordName中 */
allRecordName.put("Accept", acceptReport);
return allRecordName;
}
}
step2
package com.##bcp.report.utils;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
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.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFFooter;
import org.apache.poi.hssf.usermodel.HSSFHeader;
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.struts2.ServletActionContext;
/**
* * @date: 2012-4-27
* @time: 16:38:06
* @desc: 匯出excel pdf 功能實現
*/
public class ExportExcelPdf {
/**
* 匯出報表到excel方法
* @param reportName 報表名稱
* @param reportHead 報表頭
* @param reportTail 報表尾
* @param dataList 需要的資料集
* @param columnName 表頭顯示欄位名稱
* @return
*/
public String exportExcelReport(String reportName,String reportHead,String reportTail,List dataList,HashMap columnName) {
//增加表頭顯示欄位名稱
dataList.add(0, columnName);
if (dataList.size() > 0 && !dataList.isEmpty()) {
if (!dataList.isEmpty() && dataList.size() > 0) {
List<List> excelData = this.getExportData(dataList);
List displayNames = excelData.get(0);
List filldataList = null;
if (excelData.remove(displayNames)) {
filldataList = excelData;
}
// filldataList:為要填充的資料 displayNames要顯示的title
HSSFWorkbook workbook = null;
try {
workbook = exportExcel(reportHead, reportTail, reportName,
filldataList, displayNames);
} catch (Exception e) {
e.printStackTrace();
}// 繫結excel與資料
HttpServletResponse response = ServletActionContext
.getResponse();
if (workbook != null) {
// 列印匯出excel
this.printExcel(workbook, response,
getExportFileName(".xls"));
}
}
}
return null;
}
/**
*
* 獲取匯出的資料
*/
private List<List> getExportData(List<HashMap> dataList) {
List<List> result = new ArrayList();
List displayNames = new ArrayList();
if (!dataList.isEmpty() && dataList.size() > 0) {
Map map = dataList.get(0);
for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
displayNames.add(key);
}
result.add(displayNames);
for (int i = 1; i < dataList.size(); i++) {
Map data = dataList.get(i);
List<String> filldataList = new ArrayList();
for (Iterator iter = data.entrySet().iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry) iter.next();
Object value = entry.getValue();
if (value == null) {
value = "";
}
filldataList.add(value.toString());
}
result.add(filldataList);
}
}
return result;
}
/**
* 列印匯出的Excel
*/
private void printExcel(HSSFWorkbook workbook,
HttpServletResponse response, String excelFileName) {
try {
OutputStream out = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment;filename="
+ excelFileName);
// 設定響應文件型別為excel
response.setContentType("application/msexcel");
response.setCharacterEncoding("UTF-8");
workbook.write(out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 寫入輸入流中
*/
public HSSFWorkbook exportExcel(String reportHead, String reportTail,
String reprotName, List<List> filldataList, List displayNames)
throws Exception {
HSSFWorkbook workbook = null;
// 這裡的資料即時你要從後臺取得的資料
// 建立工作簿例項
workbook = new HSSFWorkbook();
// 建立工作表例項
HSSFSheet sheet = workbook.createSheet("TscExcel");
// 設定列寬
this.setSheetColumnWidth(displayNames.size(), sheet);
// 獲取樣式
HSSFCellStyle style = this.createTitleStyle(workbook);
// 設定頁首
HSSFHeader header = sheet.getHeader();
HSSFHeader.fontSize((short) 16);
header.setCenter(reportHead);
// 設定報表名稱
HSSFRow rowReportName = sheet.createRow((short) 0);// 建立新行
HSSFFont boldFont = workbook.createFont();
boldFont.setFontHeight((short) 400);
HSSFCellStyle styleT = workbook.createCellStyle();
styleT.setAlignment(HSSFCellStyle.ALIGN_CENTER);
styleT.setFont(boldFont);
this.createCell(rowReportName, 0, styleT, HSSFCell.CELL_TYPE_STRING,
reprotName);
// 合併單元格
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, displayNames.size()));
// 1. 建立第一行:標題,
HSSFRow row = sheet.createRow((short) 1);// 建立新行
for (int i = 0; i < displayNames.size(); i++) {
this.createCell(row, i, style, HSSFCell.CELL_TYPE_STRING,
displayNames.get(i));
}
// 2. 給excel填充資料
int i = 0;
for (List<List> tableBody : filldataList) {
HSSFRow rowBody = sheet.createRow((short) (i + 2));// 建立新行
for (int j = 0; j < tableBody.size(); j++) {
this.createCell(rowBody, j, style, HSSFCell.CELL_TYPE_STRING,
tableBody.get(j));
}
i++;
}
// 設定頁尾
HSSFFooter footer = sheet.getFooter();
HSSFFooter.fontSize((short) 16);
footer.setCenter(reportTail);
return workbook;
}
/**
* 生成匯出檔案的名稱 :按匯出時間生成檔名稱
*/
private String getExportFileName(String fix) {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(date) + fix;
}
/**
* 建立Excel單元格
*/
private void createCell(HSSFRow row, int column, HSSFCellStyle style,
int cellType, Object value) {
HSSFCell cell = row.createCell((short) column);
if (style != null) {
cell.setCellStyle(style);
}
switch (cellType) {
case HSSFCell.CELL_TYPE_BLANK: {
}
break;
case HSSFCell.CELL_TYPE_STRING: {
cell.setCellValue(value.toString() + "");
}
break;
case HSSFCell.CELL_TYPE_NUMERIC: {
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(Double.parseDouble(value.toString()));
}
break;
default:
break;
}
}
/**
* 設定列寬
*/
private void setSheetColumnWidth(int titles_CN, HSSFSheet sheet) {
// 根據你資料裡面的記錄有多少列,就設定多少列
for (int i = 0; i < titles_CN; i++) {
sheet.setColumnWidth((short) i, (short) 3000);
}
}
/**
* 設定excel的title樣式
*/
private HSSFCellStyle createTitleStyle(HSSFWorkbook wb) {
HSSFFont boldFont = wb.createFont();
boldFont.setFontHeight((short) 200);
HSSFCellStyle style = wb.createCellStyle();
style.setFont(boldFont);
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("###,##0.00"));
return style;
}
}
step3在action中編寫如下方法
/* 匯出報表 */
@SuppressWarnings("all")
public String exportAcceptReport() {
HashMap acceptParam = new HashMap();
acceptParam.put("phoneId", getEntity().getPhoneId());
acceptParam.put("reBeginTime", getEntity().getReBeginTime());
acceptParam.put("reEndTime", getEntity().getReEndTime());
acceptParam.put("organiseCode", getLoginer().getOrganise()
.getOrganiseCode());
//1.獲取資料來源
List dataList = tmcIntspAcceptService
.getTmcInspAcceptList(acceptParam);
//2.把TmcIntspAcceptInfo物件專為HashMap物件
List savedata=new ArrayList();
for(int i=0;i<dataList.size();i++){
TmcIntspAcceptInfo tmi=(TmcIntspAcceptInfo) dataList.get(i);
HashMap map=new LinkedHashMap();
map.put("regId",tmi.getRegId());
map.put("operId",tmi.getOperId());
map.put("phoneId",tmi.getPhoneId());
map.put("reContent",tmi.getReContent());
map.put("flag",tmi.getFlag());
map.put("reTime",tmi.getReTime());
savedata.add(map);
}
//3.傳遞引數匯出報表
return new ExportExcelPdf().exportExcelReport(
ReportConfig.reportNameAccept, ReportConfig.reportHeadAccept,
ReportConfig.reportTailAccept, savedata,ReportConfig.getRecordName().get("Accept"));
}
相關推薦
結合struts2實現的通用匯出excel實現詳細介紹
step1 package @@.bcp.report.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * @date: 2012-4-28
通過註解實現通用匯出Excel
Javaweb開發中資料的匯入匯出很常見,每次我們都需要寫很多程式碼,所以我就在想能不能寫一些通用的方法,之前已經在網上 整理過一些通用的方法,最近在網上看到一位牛人封裝的更加簡介,自己拿過來整理了一下
java jxl實現通用匯出excel
包:jxl-2.6.12.jar、commons-beanutils-1.9.3.jar /** * @Description: TODO 通用模板 * @Title: writeToFile * @return void * @parm list 資料集合 * @parm nameLis
JAVA匯出EXCEL實現
JAVA匯出EXCEL實現的多種方式 java匯出Excel的方法有多種,最為常用的方式就是使用第三方jar包,目前POI和JXL是最常用的二方包了,也推薦使用這兩種。 POI實現 POI這裡不詳細解釋,可參考徐老師發的部落格:http://blog.csdn.net/evangel_z/a
Spring結合JPA設計通用的BaseDao實現完全的面向介面程式設計
這是我們團隊小專案中設計的通用BaseDao: public interface BaseDao<T> { /** * 新增實體類 * @param t * @return */ public T ad
JeeSite中實現匯入匯出Excel步驟
閒話 少說 直接 上 程式碼 springMVC專案 JSP頁面程式碼如下 </shiro:hasPermission> <shiro:hasPermission name="echarts:memPutInto:import">
POI 匯出Excel實現合併單元格以及列自適應寬度
目錄 參考推薦: POI 匯出Excel 1. 合併單元格 POI是apache提供的一個讀寫Excel文件的開源元件,在操作excel時常要合併單元格,合併單元格的方法是: public CellRang
SpringBoot整合POI實現檔案匯出Excel,匯入Excel更新Mysql資料庫資料
上傳功能 轉載自https://blog.csdn.net/xyy1028/article/details/79054749原創寫的非常好,但是每個人都有自己的業務邏輯;所以在研究了一點之後,打上註釋,方便新手理解,同時也方便自己記憶;專案目錄applicat
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實現java匯出Excel功能
import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel
vue專案實現表格匯出excel表格
第一:安裝依賴 npm install -S file-saver xlsx npm install -D script-loader 第二:在目錄裡新建excel資料夾 在excel資料夾裡新建兩個js檔案(Blob.js和Export2Excel.js) Blob.js
MFC對匯出Excel的詳細講解
MFC讀寫Excel詳細步驟 說明 : 程式碼編譯可能會編譯不通過,主要是看註釋說明. 準備工作: 開啟開發環境VC或VS新建一個基於對話方塊的簡單工程; 通過類嚮導新增類-->型別庫中的MFC類 開啟建立類對話方塊 &nb
POI 通用匯出Excel(.xls,.xlsx)
POI操作EXCEL物件 HSSF:操作Excel 97(.xls)格式 XSSF:操作Excel 2007 OOXML (.xlsx)格式,操作EXCEL記憶體佔用高於HSSF SXSSF:從POI3.8 beta3開始支援,基於XSSF,低記憶體
struts2匯入、匯出 excel
前臺: //前臺頁面 <form action="/service/wxExportTool/inputExce.action" method="post" enctype="multipart/form-data" id="form2">
Struts2之Validator驗證框架的詳細介紹
Struts2中提供了資料校驗驗證資料例如驗證郵件、數字等。驗證方式有3種: 一是通過validate()方法, 二是通過Xml, 三是使用註解方式。 一、初始化 首先定義一個User類 1 2 3 4 5 6
phpExcel實現Excel資料的匯入匯出(全步驟詳細解析)
一,Excel檔案上傳,返回陣列 (需下載PHPExcel類檔案,引入到專案類庫裡) 1.上傳新增excel //接收前臺檔案, public function addExcel() { //接收前臺檔案 $e
poi3.17 匯出Excel通用模板及實現流程
<div onclick="daochu()"> 匯出 </div>function daochu(){ var url = "../biz/sch/student/exportTest"; url = encodeURI(url)
PHP 實現大資料(30w量級)表格匯出(匯出excel) 提高效率,減少記憶體消耗,終極解決方案
使用php做專案開發的同學,一定都會有過使用php進行excel表格匯出的經歷,當匯出少量資料還好,一旦資料量級達到5w、 10w、20w甚至30以上的時候就會面臨同樣的問題: 1、匯出時間變得很慢,少則1分鐘,多則好幾分鐘,資料量一旦上來,還可能面臨導不出來的困窘(這種匯出效率正常人都會受
php實現匯出excel功能
MySQL篩選出要匯出資料的列表,欄位就是excel中要顯示的列,比如id、name、address等 設定匯出excel的表名,一般是名稱加時間的格式,php程式碼如下: $field = 'a.`did`,a.addtime,a.`phone`,a.`system`,a.m