poi3.17 匯出Excel通用模板及實現流程
<div onclick="daochu()">
匯出
</div>
function daochu(){
var url = "../biz/sch/student/exportTest";
url = encodeURI(url);
location.href = url;
}
@ResponseBody @GetMapping("/exportTest") public void exportTest(HttpServletRequest request,HttpServletResponse response){ String fileName = "匯出"; response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); try { response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1") + ".xls"); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } PaperMgrExcel prsSch = new PaperMgrExcel(); JSONObject param = new JSONObject(); param.put("paperId", 111); param.put("paperName", "ceshi1"); param.put("xkId", 1); JSONArray jarr = null; try { prsSch.exportExcel(request, response, jarr); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
package com.moofen.cube.service.biz.sch; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.moofen.core.entity.ExportExcelEntity; import com.moofen.core.util.excel.impl.ExportExcelBase; public class PaperMgrExcel extends ExportExcelBase { /** * * @Title: exportExcel @Description: 匯出Excel @param param @return 引數 @return * void @throws */ public void exportExcel(HttpServletRequest request, HttpServletResponse response, JSONArray jarr) throws Exception { OutputStream os = null; try { // 構建sheet名 String sheetName = "試卷結構匯出"; // 構建標題 String sheetTitle = "試卷結構匯出"; // 構建列名 ArrayList<String> sheetFieldsName = new ArrayList<String>(); sheetFieldsName.add("姓名"); sheetFieldsName.add("學號"); sheetFieldsName.add("英文"); // 構建資料 JSONArray jaDatas = new JSONArray(); for (int i = 0; i < 3; i++) { ArrayList<Object> arr = new ArrayList<Object>(); JSONObject jo = new JSONObject(); arr.add("張三"); arr.add(123); arr.add("Test"); jo.put("data", arr); jaDatas.add(jo); } // 設定列寬 ArrayList<Integer> sheetColWidth = new ArrayList<Integer>(); sheetColWidth.add(0, 2000); sheetColWidth.add(1, 3000); sheetColWidth.add(2, 4000); // title的高度 int sheetTitleHeight = 500; // 構建表單內容實體 ExportExcelEntity expoEntity = new ExportExcelEntity(sheetName, sheetTitle, sheetFieldsName, jaDatas, sheetColWidth, sheetTitleHeight); List<ExportExcelEntity> sheets = new ArrayList<ExportExcelEntity>(); sheets.add(expoEntity); setSheets(sheets); os = response.getOutputStream(); // 如果要自定義寫入表單資料呼叫這個方法並複寫父類 writeExcelSheetSelf( ExportExcelEntity // expoEntity)方法 // writeExcel(os,true); // 直接呼叫父類模板方法 writeExcel(os); } catch (Exception e) { throw new Exception("Export Excel failed, beacause" + e.getMessage()); } } }
package com.moofen.core.entity; import java.util.ArrayList; import com.alibaba.fastjson.JSONArray; public class ExportExcelEntity { // sheet名稱 private String sheetName; // sheet的title private String sheetTitle; // sheet的列名 private ArrayList<String> sheetFieldsName; /** * sheet的資料<br/> * */ private JSONArray sheetData; // 設定列寬 private ArrayList<Integer> sheetColWidth; // title的高度 private int sheetTitleHeight = 500; public ExportExcelEntity(String sheetName, String sheetTitle, ArrayList<String> sheetFieldsName, JSONArray sheetData) { super(); this.sheetName = sheetName; this.sheetTitle = sheetTitle; this.sheetFieldsName = sheetFieldsName; this.sheetData = sheetData; } public ExportExcelEntity(String sheetName, String sheetTitle, ArrayList<String> sheetFieldsName, JSONArray sheetData, ArrayList<Integer> sheetColWidth, int sheetTitleHeight) { super(); this.sheetName = sheetName; this.sheetTitle = sheetTitle; this.sheetFieldsName = sheetFieldsName; this.sheetData = sheetData; this.sheetColWidth = sheetColWidth; this.sheetTitleHeight = sheetTitleHeight; } public String getSheetName() { return sheetName; } public void setSheetName(String sheetName) { this.sheetName = sheetName; } public String getSheetTitle() { return sheetTitle; } public void setSheetTitle(String sheetTitle) { this.sheetTitle = sheetTitle; } public ArrayList<String> getSheetFieldsName() { return sheetFieldsName; } public void setSheetFieldsName(ArrayList<String> sheetFieldsName) { this.sheetFieldsName = sheetFieldsName; } public JSONArray getSheetData() { return sheetData; } public void setSheetData(JSONArray sheetData) { this.sheetData = sheetData; } public ArrayList<Integer> getSheetColWidth() { return sheetColWidth; } public void setSheetColWidth(ArrayList<Integer> sheetColWidth) { this.sheetColWidth = sheetColWidth; } public int getSheetTitleHeight() { return sheetTitleHeight; } public void setSheetTitleHeight(int sheetTitleHeight) { this.sheetTitleHeight = sheetTitleHeight; } }
package com.moofen.core.util.excel.impl;
import java.io.OutputStream;
import java.util.List;
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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.moofen.core.entity.ExportExcelEntity;
public class ExportExcelBase {
// protected final Logger logger = Logger.getLogger(getClass());
protected HSSFWorkbook wb = new HSSFWorkbook();;
protected HSSFCellStyle styleTitle = null;
protected HSSFCellStyle styleTitle2 = null;
protected HSSFCellStyle cellStyle = null;
private List<ExportExcelEntity> sheets;
HSSFFont font = null;
public void setStyleTitle(HSSFCellStyle styleTitle) {
this.styleTitle = styleTitle;
}
// ----------------一級標題格樣式----------------------------------
public HSSFCellStyle getStyleTitle() {
HSSFCellStyle styleTitle = wb.createCellStyle(); // 標題樣式
styleTitle.setAlignment(HorizontalAlignment.CENTER);
styleTitle.setVerticalAlignment(VerticalAlignment.CENTER);
Font ztFont = wb.createFont();
ztFont.setItalic(false); // 設定字型為斜體字
ztFont.setColor(Font.COLOR_NORMAL); // 設定字型顏色
ztFont.setFontHeightInPoints((short) 18); // 將字型大小設定為18px
ztFont.setFontName("宋體"); // 將“宋體”字型應用到當前單元格上
ztFont.setBold(true); // 加粗
styleTitle.setFont(ztFont);
return styleTitle;
}
public void setStyleTitle2(HSSFCellStyle styleTitle2) {
this.styleTitle2 = styleTitle2;
}
// ----------------二級標題格樣式----------------------------------
public HSSFCellStyle getStyleTitle2() {
HSSFCellStyle styleTitle2 = wb.createCellStyle(); // 表格樣式
styleTitle2.setAlignment(HorizontalAlignment.CENTER);
styleTitle2.setVerticalAlignment(VerticalAlignment.CENTER);
Font ztFont2 = wb.createFont();
ztFont2.setItalic(false); // 設定字型為斜體字
ztFont2.setColor(Font.COLOR_NORMAL); // 設定字型顏色
ztFont2.setFontHeightInPoints((short) 12); // 將字型大小設定為12px
ztFont2.setFontName("宋體"); // 字型應用到當前單元格上
ztFont2.setBold(true); // 加粗
styleTitle2.setFont(ztFont2);
return styleTitle2;
}
public void SetCellStyle(HSSFCellStyle cellStyle) {
this.cellStyle = cellStyle;
}
// ----------------單元格樣式----------------------------------
public HSSFCellStyle getCellStyle() {
HSSFCellStyle cellStyle = wb.createCellStyle(); // 表格樣式
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setBorderBottom(BorderStyle.THIN); // 下邊框
cellStyle.setBorderLeft(BorderStyle.THIN);// 左邊框
cellStyle.setBorderTop(BorderStyle.THIN);// 上邊框
cellStyle.setBorderRight(BorderStyle.THIN);// 右邊框
Font cellFont = wb.createFont();
cellFont.setItalic(false); // 設定字型為斜體字
cellFont.setColor(Font.COLOR_NORMAL); // 設定字型顏色
cellFont.setFontHeightInPoints((short) 10); // 將字型大小設定為12px
cellFont.setFontName("宋體"); // 字型應用到當前單元格上
// cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
cellStyle.setFont(cellFont);
return cellStyle;
}
protected void writeExcel(OutputStream os) {
try {
// 建立Excel的 Workbook,對應到一個excel文件
wb = new HSSFWorkbook();
for (ExportExcelEntity d : this.sheets) {
writeExcelSheet(d);
}
wb.write(os);
} catch (Exception e) {
// e.printStackTrace();
try {
if (os != null)
os.close();
} catch (Exception oe) {
}
}
}
protected void writeExcel(OutputStream os, boolean isSelf) {
try {
// 建立Excel的 Workbook,對應到一個excel文件
wb = new HSSFWorkbook();
for (ExportExcelEntity d : this.sheets) {
if (isSelf) {
writeExcelSheetSelf(d);
} else {
writeExcelSheet(d);
}
}
wb.write(os);
} catch (Exception e) {
// e.printStackTrace();
try {
if (os != null)
os.close();
} catch (Exception oe) {
}
}
}
protected void writeExcelSheetSelf(ExportExcelEntity expoEntity) {
}
/**
* 建立excel Sheet
*
* @param expoEntity
*/
protected void writeExcelSheet(ExportExcelEntity expoEntity) {
// 建立Excel的工作sheet,對應到一個excel文件的tab
HSSFSheet sheet = wb.createSheet(expoEntity.getSheetName());
/*---------------------------------------
* 建立sheet的title
*--------------------------------------*/
// 總列數 =
int colsCount = expoEntity.getSheetFieldsName().size();
// 建立Excel的sheet的一行
HSSFRow row = sheet.createRow(0);
row.setHeight((short) expoEntity.getSheetTitleHeight());// 設定行的高度
// 建立一個Excel的單元格
HSSFCell cell_title = row.createCell(0);
// 合併單元格(startRow,endRow,startColumn,endColumn)
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, colsCount - 1));
// 給Excel的單元格設定樣式和賦值
cell_title.setCellStyle(this.getStyleTitle());
cell_title.setCellValue(expoEntity.getSheetTitle());
/*---------------------------------------
* 建立sheet的列名
*--------------------------------------*/
row = sheet.createRow(1);
HSSFCellStyle headerStyle = this.getStyleTitle2();
headerStyle.setWrapText(true);
for (int i = 0; i < colsCount; i++) {
HSSFCell cell_header = row.createCell(i);
String h = expoEntity.getSheetFieldsName().get(i);
cell_header.setCellValue(h);
// 設定自定義列寬
if (expoEntity.getSheetColWidth() != null) {
sheet.setColumnWidth(i, expoEntity.getSheetColWidth().get(i));
}
cell_header.setCellStyle(headerStyle);
}
/*---------------------------------------
* 建立sheet的資料
*--------------------------------------*/
JSONArray datas = expoEntity.getSheetData();
HSSFCellStyle cellStyle = this.getCellStyle();
for (int i = 0; i < datas.size(); i++) {
JSONObject rowData = datas.getJSONObject(i);
row = sheet.createRow(2 + i);
JSONArray cellDatas = rowData.getJSONArray("data");
Object[] _cellDatas = cellDatas.toArray();
for (int j = 0; j < _cellDatas.length; j++) {
HSSFCell cell_Data = row.createCell(j);
// 給Excel的單元格設定樣式和賦值
cell_Data.setCellStyle(cellStyle);
Object cellData = _cellDatas[j];
if (cellData == null)
continue;
if ("class java.lang.String".equalsIgnoreCase(cellData.getClass().toString())) {
cell_Data.setCellValue((String) cellData);
// cell_Data.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_RIGHT);
}
if ("class java.lang.Double".equalsIgnoreCase(cellData.getClass().toString())) {
// cell_Data.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_RIGHT);
cell_Data.setCellValue((Double) cellData);
}
if ("class java.lang.Integer".equalsIgnoreCase(cellData.getClass().toString())) {
// cell_Data.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_RIGHT);
cell_Data.setCellValue((Integer) cellData);
}
}
}
}
public List<ExportExcelEntity> getSheets() {
return sheets;
}
public void setSheets(List<ExportExcelEntity> sheets) {
this.sheets = sheets;
}
}
相關推薦
poi3.17 匯出Excel通用模板及實現流程
<div onclick="daochu()"> 匯出 </div>function daochu(){ var url = "../biz/sch/student/exportTest"; url = encodeURI(url)
POI 3.17 讀取Excel(模板)、匯出Excel
最近在給通用做一個專案,很多功能塊需要匯入Excel模板,我正好研究了幾天Maven依賴<dependency> <groupId>org.apache.commons</groupId> <artifactI
C++函式模板及實現原理
C++為我們提供了函式模板機制。所謂函式模板,實際上是建立一個通用函式,其函式型別和形參型別不具體指定,用一個虛擬的型別來代表。這個通用函式就稱為函式模板。 凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義
BCP SQL匯出EXCEL常見問題及解決方法;資料匯出儲存過程
一、‘xp_cmdshell’的啟用 SQL Server阻止了對元件‘xp_cmdshell’的過程‘sys.xp_cmdshell’的訪問。因為此元件已作為此服務囂安全配置的一部分而被關 閉。系統管理員可以通過使用sp_configure啟用‘xp_cmdshell’。有關啟用‘xp_cmdshell’
JAVA 關於web頁面下載匯出Excel通用方法
最近整理匯出Excel,這種情況是不存在實體類方式,只要按照這種資料格式編寫,就可以出來效果了。 1.需要的的jar包: poi-ooxml-3.9.jar serlet.api.jar 缺少的包自己去下就可以,都是常用的包,這裡就不一一寫出來了 下面看程式碼: 公
匯出excel通用介面
public static MemoryStream ExportToMemoryStream(List wechatlogList) { XSSFWorkbook book; ISheet currentSheet; string templateFilePa
asp.net 利用NPOI匯出Excel通用類
解決中文檔名儲存Excel亂碼問題,主要是判斷火狐或者IE瀏覽器,然後做對應的判斷處理,核心程式碼如下: System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; //
java匯出Excel通用方法
一.後端程式碼 public void downLoadProductType() throws Exception { String sheetName = "商品類別統計表單"; String titleName = "可新增商品類別編號對照表"; Stri
Java 使用 Poi 匯出 Excel 通用(二)
上一篇:Java 使用 Poi 匯入 Excel 通用(一) /** * 檔案寫入excel * @param file 檔案 * @param list 資料來源 * @param sheetname 工作簿 * @throws IOException
api匯出excel的四種實現方法
潤乾報表是純java的,不僅本身具有很強大豐富的功能,同時還在不同層面上提供了豐富的java介面。這裡主要說說業務系統中常用的一個功能–匯出excel。 本文給出四種常用的通過API介面來實現匯出excel的方法:其中方法1和方法2是通過類com.runqian.repor
Java之——匯出Excel通用工具類
一、概述 相信大家在工作過程中,都會遇到這樣一個需求,就是將相關的資料列表匯出成excel,那麼,有沒有通用的匯出方式呢,這裡,就帶著大家一起來用Java實現一個通用的匯出Excel的工具。 二、專案實現 1、構建pom.xml 我們的工程是利用Maven來構建的
C++使用VS2010匯出Excel的方法及步驟
最近工作需要將listctrl中的資料匯出到Excel中。網上找了很多,但多數是VC6.0的。結合VC6.0匯出的方法,自己琢磨了不少時間,終於將問題解決了。輕鬆之餘,將過程分享出來,希望對需要的人有所幫助。 一、設定 環境: Windows7 Microsoft Visual Studi
匯入和匯出Excel通用方法
package com.javen.service; import java.io.File; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List
Java匯出Excel表,POI 實現合併單元格以及列自適應寬度
//字型 HSSFFont font = workbook.createFont(); font.setFontName("仿宋_GB2312"); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗體顯示
Spring+JPA 通用DAO及實現
介面: import java.util.LinkedHashMap; import com.itcast.bean.QueryResult; public interface DAO { /** * 獲取記錄總數 * @param entityClass 實體類
NET使用NPOI元件將資料匯出Excel-通用方法 【推薦】
一、Excel匯入及匯出問題產生: 從接觸.net到現在一直在維護一個DataTable匯出到Excel的類,時不時還會維護一個匯入類。以下是時不時就會出現的問題: 匯出問題: 如果是asp.net,你得在伺服器端裝Office,幾百M呢,還得及時更新它,以防漏洞,還得設定許可權允許ASP.n
Web應用匯出Excel報表的簡單實現(HTML)
<%@ page contentType="text/html; charset=GBK" %><% response.setContentType("application/vnd.ms-excel;charset=GBK"); %><HTML><meta http
CMakeLists多目錄通用模板及Win&Linux相容動態庫編寫
CMakeLists多目錄通用模板 CMake不僅具有跨平臺(一次編寫,多次編譯)的特點,還有便於工程管理的特點,支援CMake的IDE也有很多(VS[MS],QT,CodeBlock等)。 以一個通用組織的工程(包含PCL,VTK,libLAS第三方庫)為
swagger codegen自定義模板的實現流程
swagger codegen學習自定義模板 * 參考https://www.cnblogs.com/shamo89/p/7680771.html * 下載Swagger codegen的jar包https://oss.sonatype.org/content/re
jxl實現寫入excel模板及匯出(帶圖片)
在上一片部落格中我用的是freemarker(操作簡單),試了很多種方法就是沒有把帶圖片的excel匯出來,沒辦法就換jxl來實現。好了下面就開始進入正題: 第一步:pom.xml中新增jxl的依賴如下: <!-- jxl通用excel匯入匯出--> <dependen