POI匯出Excel檔案
1:設定瀏覽器儲存excel檔案格式
response.setContentType("application/vnd.ms-excel");
2:設定匯出的檔名稱
response.setHeader("content-disposition", "attachment;filename=" + fileName + ".xls");
Workbook workbook = exportService.exportFile(request, student); OutputStream out = null; try { out = response.getOutputStream(); workbook.write(out); } catch (IOException e) { } finally { try { out.flush(); out.close(); } catch (Exception e) {} }
實現類:
public Workbook exportFile(HttpServletRequest request, Student student) { int count = 0; Workbook workbook = new HSSFWorkbook(); //設定sheet名稱 Sheet sheet = workbook.createSheet(); workbook.setSheetName(0, "學生列表"); ExportExcelUtil excelUtil = new ExportExcelUtil(workbook, sheet); // 建立EXCEL表頭資訊 // 表頭(假定有四列) String[] headTittles = null; headTittles = new String[] { "學號","姓名","年齡","性別" }; // 設定各列寬度 short[] studentWidths = new short[] { 1000 * 8, 1000 * 8, 1000 * 8, 1000 * 8 }; Map<String, Object> properties = getPropertiesStudent(request, student); //設定按學號升序排列取出資料 LinkedHashMap<String, String> orderBy = new LinkedHashMap<String, String>(); orderBy.put("id", "asc"); //取出所有滿足條件的資料 List<Student> students = studentDao.getStudentByMap(properties, orderBy); if (students != null && students .size() > 0) { //建立EXCEL表頭 excelUtil.createHeaderRow(orderHeadTittles, count++); //迴圈每個物件 for (Student student: students) { //獲取總列數 String[] commRowValues = new String[headTittles.length]; //迴圈每個物件的四個屬性 for (int i = 0; i < commRowValues.length; i++) { String property = headTittles[i]; if ("學號".equals(property)) { commRowValues[i] = UtilCommon.getString(student.getId()); }else if ("姓名".equals(property)) { commRowValues[i] = UtilCommon.getString(student.getName()); }else if ("年齡".equals(property)) { commRowValues[i] = UtilCommon.getString(stuent.getAge()); }else if ("性別".equals(property)) { commRowValues[i] = UtilCommon.getString(student.getSex()); } } //增加新的一行 excelUtil.createCommonRow(commRowValues, count++); } } // 調整列寬 for (int i = 0; i < studentWidths.length; i++) { sheet.setColumnWidth(i, studentWidths[i]); } return workbook; }
將request裡的請求資料封裝到properties形式的map中:
private Map<String, Object> getPropertiesStudent(HttpServletRequest request, Student student) { // id String id = UtilCommon.getString(request.getParameter("id")); // 姓名 String name = UtilCommon.getString(request.getParameter("name")); // 年齡 String age = UtilCommon.getString(request.getParameter("age")); // 性別 String sex = UtilCommon.getString(request.getParameter("sex")); Map<String, Object> properties = new HashMap<String, Object>(); if (!"".equals(id)) { int id = 0; try{ id = Integer.valueOf(id); }catch (Exception e){ } properties.put("id", id); } if (!"".equals(name)) { properties.put("name", name); } if (!"".equals(age)) { properties.put("age", Integer.valueOf(age)); } if (!"".equals(sex)) { properties.put("sex", sex); } return properties; }
獲取student資料:
public List getStudentsByMap(Map<String, Object> properties,LinkedHashMap<String, String> orderBy){
List<Object> objs = new ArrayList<Object>();
String queryStr = this.getQueryStrStudent(properties, objs);
String orderStr = WebTool.buildOrderBy(orderBy);
return this.getHibernateTemplate().find(queryStr + orderStr,
objs.toArray());
}
構造查詢語句:
public String getQueryStrStudent(Map<String, Object> properties, List<Object> objs) {
StringBuilder builder = new StringBuilder();
builder.append("select xxx Student(entry.id,entry.name,entry.age,entry.sex) from Stuent as entry where 1=1");
if (properties != null) {
// ID
if (properties.containsKey("id")) {
if (!"".equals(UtilCommon.getString(properties.get("id")))) {
String ids = UtilCommon.getString(properties.get("id"));
String[] arrStudentId = ids.split(",");
builder.append(" and ( ");
for (int i = 0; i < arrStudentId.length; i++) {
if (i==0) {
builder.append("entry.id ="+arrStudentId[i]+"");
}else {
builder.append(" or entry.id="+arrStudentId[i]+"");
}
}
builder.append(" ) ");
} else {
builder.append(" and entry.id is null ");
}
}
// 姓名
if (properties.containsKey("name")) {
if (!"".equals(UtilCommon.getString(properties.get("name")))) {
String name = UtilCommon.getString(properties.get("name"));
String[] arrname = name.split(",");
builder.append(" and ( ");
for (int i = 0; i < arrname.length; i++) {
if (i==0) {
builder.append("entry.name = ?");
objs.add(arrmobile[i]);
}else {
builder.append(" or entry.name = ? ");
objs.add(arrmobile[i]);
}
}
builder.append(" ) ");
}
}
// 年齡
if (properties.containsKey("age")) {
String strage = UtilCommon.getString(properties.get("age"));
if (!"".equals(strage)) {
long id = 0;
try{
age = Long.valueOf(strage);
}catch (Exception e){
}
builder.append(" and entry.age = ? ");
objs.add(age);
} else {
builder.append(" and entry.age is null ");
}
}
// 性別
if (properties.containsKey("sex")) {
if (!"".equals(UtilCommon.getString(properties.get("sex")))) {
builder.append(" and entry.sex = ? ");
objs.add(properties.get("sex"));
} else {
builder.append(" and entry.sex is null ");
}
}
}
return builder.toString();
}
工具類://設定excel表格屬性
public ExportExcelUtil(Workbook workbook, Sheet sheet) {
this.wb = workbook;
this.sheet = sheet;
// 設定單元格樣式
cellstyledefault = wb.createCellStyle();
// 水平居中對齊
cellstyledefault.setAlignment(CellStyle.ALIGN_CENTER);
// 垂直居中對齊
cellstyledefault.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
// 設定單元格自動換行
cellstyledefault.setWrapText(true);
// 設定單元格字型
Font font = wb.createFont();
font.setFontName("宋體");
font.setFontHeight((short) 250);
cellstyledefault.setFont(font);
}
/**
* 設定排序條件(order by XXX desc,yyy asc,zzz desc)
*
* @param orderBy
* 排序LinkedHashMap
* @return String 排序語句
*/
public static String buildOrderBy(LinkedHashMap<String, String> orderBy) {
StringBuffer orderBySql = new StringBuffer();
if (null != orderBy && orderBy.size() > 0) {
orderBySql.append(" order by ");
for (String key: orderBy.keySet()) {
orderBySql.append(key).append(" ").append(orderBy.get(key)).append(",");
}
// 刪除多餘的一個逗號
orderBySql.deleteCharAt(orderBySql.length() - 1);
}
return orderBySql.toString();
}
相關推薦
使用poi匯出excel檔案
一、獲取資料 private List<PmsrT2> getPmsrT2List(HttpServletRequest request) { try { &
POI匯出Excel檔案,瀏覽器點選可下載
說明:使用SpringMVC+POI 1:服務端程式碼 /** * 匯出日誌查詢列表 */ @RequestMapping(value = "/log_excel") public void exportLogList(HttpS
POI匯出Excel檔案
1:設定瀏覽器儲存excel檔案格式response.setContentType("application/vnd.ms-excel"); 2:設定匯出的檔名稱response.setHeader("content-disposition", "attachment;fi
使用poi 匯出Excel檔案 並解決中文名亂碼
使用poi 匯出Excel檔案 並解決中文名亂碼 第一種方法: @Action("subAreaAction_exportXLs") public String exportXLs() throws IOException{ List<SubArea>l
apache POI匯出excel檔案 及單元格合併 、樣式的設定
客戶需要從完單物料資訊中到處excel 大概思路: 單擊某一按鈕,觸發請求至後臺,建立輸出流,匯出excel ^_^ 前臺程式碼: (此段程式碼 註釋部分存在一個問題,註釋部分的請求無效,後臺無法響應前臺請求, 引數傳過去了,後臺也接受了,但輸出流沒有輸出,木雞wh
Springboot 之 使用POI匯出Excel檔案
本文章來自【知識林】 建立表頭資訊 表頭資訊用於自動生成表頭結構及排序 public class ExcelHeader implements Comparable<ExcelHeader>{ /** * exce
POI 操作 EXCEL檔案(匯入、匯出)
1.1概述 開發中經常會設計到excel的處理,如匯出Excel,匯入Excel到資料庫中,操作Excel目前有兩個框架,一個是apache 的poi, 另一個是 Java Excel Apache POI 簡介是用Java編寫的免費開源的跨平臺的 Java API,Ap
Apache POI實現Excel檔案匯出
文章轉載地址: https://blog.csdn.net/qq_17214237/article/details/78345246 最近開發excel匯入匯出功能,使用的是Apache的POI技術 POI提供了很多對Microsoft Office的功能,本文僅僅講解POI的Excel
POI 匯入匯出Excel檔案到資料庫(轉載)
1.匯入相應的poi jar包,我用的是3.7; 2.匯入Excel檔案到資料的類(這裡我把解析Excel檔案的操作封裝成一個類,在action中只要呼叫該類就可以了): Java程式碼 /** * POI:解析Excel檔案中的資料並把每行資料封裝成一個實體 * @par
SSM 框架整合POI外掛技術匯出EXCEL檔案
前言本次實踐的專案過程當中,對於基於SSM框架實現的專案過程,其中涉及到了前端匯出EXCEL的過程進行整理和彙總,同時對於在網上查詢到的資料等進一步進行解釋和理解,對於網路中的資料,總是會有些不適合自己專案的地方,這個也是大家在學習過程當中會遭遇到,因為別人描述的問題,是他遇
使用poi來匯入匯出excel檔案
package cn.ogsu.vod.util; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; imp
POI匯出Excel和InputStream儲存為檔案
本文需要說明的兩個問題 InputStream如何儲存到某個資料夾下 POI生成Excel POI操作utils類 程式碼如下。主要步驟如下: 建立workbook 建立sheet 生產表頭,並做相應的美化 將list中傳進來的資料依次新增到
poi匯入匯出excel檔案,相容.xls和.xlsx兩種格式
這個是測試類: package com.fishroad.util; import java.io.File; import java.io.FileInputStream; import java.math.BigDecimal; import java.text.Si
POI 實現 Excel 檔案上傳下載及大資料匯出處理
Java 中操作 Excel 的有兩種比較主流的工具包: JXL 和 POI 。JXL 只能操作 Excel 95、97、2000 等老版本格式資料,也即以 .xls 為字尾的 excel。而 POI 可以操作 Excel 95 及以後的版本,即可操作字尾為 .xls 和 .
POI匯入匯出Excel檔案(二)
最近工作中用到的POI匯入匯出Excel檔案的地方比較到,所以就乘機總結一下,在這裡先說以匯出Excel的情況簡單的說一下,現在就直接上程式碼,在程式碼上面做註釋了。 /** * 處理匯出的資料資訊 * @param list
菜鳥調錯——POI匯出Excel報錯No such file or directory
場景重現 Apache POI Linux Tomcat 如上所示,當時在linux+tomcat的環境下,使用apache的poi匯出excel的時候就會報“No such file or directory”的錯誤。 錯誤資訊 java.la
POI匯出excel表格優化
package com.ywj.excel; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java
HSSFWorkbook(poi)匯出excel表格
本文與另一篇文章關聯: csv格式匯出excel報表 其中: String accountDate 入參(日期) AccountInfoEntityResp accountInfoEntityResp 匯出的xml報文內容(轉換成obj物件) xml報文解析見另一篇:x
java使用poi匯出excel例子
java匯出某個頁籤: 第一步:先在jsp新建一個匯出介面按鈕: <a id="export" class="mini-button" iconCls="icon-download" onclick="exportexcel();" plain="true">匯出</a>
Javaweb專案,簡單應用Apache POI匯出Excel的簡單例子
直接上程式碼: jsp: 說明:這裡使用ajax請求是會有問題的,會導致瀏覽器視窗不會彈出下載提示和選擇位址列的彈窗 //匯出 $('#btn-export').click(function () { location.href = "${pageContext.r