1. 程式人生 > >POI匯出Excel檔案

POI匯出Excel檔案

1:設定瀏覽器儲存excel檔案格式
response.setContentType("application/vnd.ms-excel");
2:設定匯出的檔名稱
response.setHeader("content-disposition", "attachment;filename=" + fileName + ".xls");

3:匯出excel(2003 excel)
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