1. 程式人生 > >java +Spring MVC +MyBatis 實現Excle 匯出

java +Spring MVC +MyBatis 實現Excle 匯出

第一步:

package com.wlsq.kso.util;
import org.apache.poi.hssf.usermodel.*;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.util.Calendar;  
import java.util.List;  
import java.util.Map;  
  
/** 
 * poi 匯出excel 工具類 
 */  
public class POIUtil {  
  
    /** 
     * 1.建立 workbook 
     * @return 
     */  
    public HSSFWorkbook getHSSFWorkbook(){  
        return new HSSFWorkbook();  
    }  
  
    /** 
     * 2.建立 sheet 
     * @param hssfWorkbook 
     * @param sheetName sheet 名稱 
     * @return 
     */  
    public HSSFSheet getHSSFSheet(HSSFWorkbook hssfWorkbook, String sheetName){  
        return hssfWorkbook.createSheet(sheetName);  
    }  
  
    /** 
     * 3.寫入表頭資訊 
     * @param hssfWorkbook 
     * @param hssfSheet 
     * @param headInfoList List<Map<String, Object>> 
     *              key: title         列標題 
     *                   columnWidth   列寬 
     *                   dataKey       列對應的 dataList item key 
     */  
    public void writeHeader(HSSFWorkbook hssfWorkbook,HSSFSheet hssfSheet ,List<Map<String, Object>> headInfoList){  
        HSSFCellStyle cs = hssfWorkbook.createCellStyle();  
        HSSFFont font = hssfWorkbook.createFont();  
        font.setFontHeightInPoints((short)12);  
        font.setBoldweight(font.BOLDWEIGHT_BOLD);  
        cs.setFont(font);  
        cs.setAlignment(cs.ALIGN_CENTER);  
  
        HSSFRow r = hssfSheet.createRow(0);  
        r.setHeight((short) 380);  
        HSSFCell c = null;  
        Map<String, Object> headInfo = null;  
        //處理excel表頭  
        for(int i=0, len = headInfoList.size(); i < len; i++){  
            headInfo = headInfoList.get(i);  
            c = r.createCell(i);  
            c.setCellValue(headInfo.get("title").toString());  
            c.setCellStyle(cs);  
            if(headInfo.containsKey("columnWidth")){  
                hssfSheet.setColumnWidth(i, (short)(((Integer)headInfo.get("columnWidth") * 8) / ((double) 1 / 20)));  
            }  
        }  
    }  
  
    /** 
     * 4.寫入內容部分 
     * @param hssfWorkbook 
     * @param hssfSheet 
     * @param startIndex 從1開始,多次呼叫需要加上前一次的dataList.size() 
     * @param headInfoList List<Map<String, Object>> 
     *              key: title         列標題 
     *                   columnWidth   列寬 
     *                   dataKey       列對應的 dataList item key 
     * @param dataList 
     */  
    public void writeContent(HSSFWorkbook hssfWorkbook,HSSFSheet hssfSheet ,int startIndex,  
                                     List<Map<String, Object>> headInfoList, List<Map<String, Object>> dataList){  
        Map<String, Object> headInfo = null;  
        HSSFRow r = null;  
        HSSFCell c = null;  
        //處理資料  
        Map<String, Object> dataItem = null;  
        Object v = null;  
        for (int i=0, rownum = startIndex, len = (startIndex + dataList.size()); rownum < len; i++,rownum++){  
            r = hssfSheet.createRow(rownum);  
            r.setHeightInPoints(16);  
            dataItem = dataList.get(i);  
            for(int j=0, jlen = headInfoList.size(); j < jlen; j++){  
                headInfo = headInfoList.get(j);  
                c = r.createCell(j);  
                v = dataItem.get(headInfo.get("dataKey").toString());  
  
                if (v instanceof String) {  
                    c.setCellValue((String)v);  
                }else if (v instanceof Boolean) {  
                    c.setCellValue((Boolean)v);  
                }else if (v instanceof Calendar) {  
                    c.setCellValue((Calendar)v);  
                }else if (v instanceof Double) {  
                    c.setCellValue((Double)v);  
                }else if (v instanceof Integer  
                        || v instanceof Long  
                        || v instanceof Short  
                        || v instanceof Float) {  
                    c.setCellValue(Double.parseDouble(v.toString()));  
                }else if (v instanceof HSSFRichTextString) {  
                    c.setCellValue((HSSFRichTextString)v);  
                }else {  
                    c.setCellValue(v.toString());  
                }  
            }  
        }  
    }  
  
    public void write2FilePath(HSSFWorkbook hssfWorkbook, String filePath) throws IOException{  
        FileOutputStream fileOut = null;  
        try{  
            fileOut = new FileOutputStream(filePath);  
            hssfWorkbook.write(fileOut);  
        }finally{  
            if(fileOut != null){  
                fileOut.close();  
            }  
        }  
    }  
  
  
    /** 
     * 匯出excel 
     * code example: 
         List<Map<String, Object>> headInfoList = new ArrayList<Map<String,Object>>(); 
         Map<String, Object> itemMap = new HashMap<String, Object>(); 
         itemMap.put("title", "序號1"); 
         itemMap.put("columnWidth", 25); 
         itemMap.put("dataKey", "XH1"); 
         headInfoList.add(itemMap); 
 
         itemMap = new HashMap<String, Object>(); 
         itemMap.put("title", "序號2"); 
         itemMap.put("columnWidth", 50); 
         itemMap.put("dataKey", "XH2"); 
         headInfoList.add(itemMap); 
 
         itemMap = new HashMap<String, Object>(); 
         itemMap.put("title", "序號3"); 
         itemMap.put("columnWidth", 25); 
         itemMap.put("dataKey", "XH3"); 
         headInfoList.add(itemMap); 
 
         List<Map<String, Object>> dataList = new ArrayList<Map<String,Object>>(); 
         Map<String, Object> dataItem = null; 
         for(int i=0; i < 100; i++){ 
         dataItem = new HashMap<String, Object>(); 
         dataItem.put("XH1", "data" + i); 
         dataItem.put("XH2", 88888888f); 
         dataItem.put("XH3", "脈兜V5.."); 
         dataList.add(dataItem); 
         } 
         POIUtil.exportExcel2FilePath("test sheet 1","F:\\temp\\customer2.xls", headInfoList, dataList); 
 
     * @param sheetName   sheet名稱 
     * @param filePath   檔案儲存路徑, 如:f:/a.xls 
     * @param headInfoList List<Map<String, Object>> 
     *                           key: title         列標題 
     *                                columnWidth   列寬 
     *                                dataKey       列對應的 dataList item key 
     * @param dataList  List<Map<String, Object>> 匯出的資料 
     * @throws java.io.IOException 
     * 
     */  
    public static void exportExcel2FilePath(String sheetName, String filePath,  
                                   List<Map<String, Object>> headInfoList,  
                                   List<Map<String, Object>> dataList) throws IOException {  
        POIUtil poiUtil = new POIUtil();  
        //1.建立 Workbook  
        HSSFWorkbook hssfWorkbook = poiUtil.getHSSFWorkbook();  
        //2.建立 Sheet  
        HSSFSheet hssfSheet = poiUtil.getHSSFSheet(hssfWorkbook, sheetName);  
        //3.寫入 head  
        poiUtil.writeHeader(hssfWorkbook, hssfSheet, headInfoList);  
        //4.寫入內容  
        poiUtil.writeContent(hssfWorkbook, hssfSheet, 1, headInfoList, dataList);  
        //5.儲存檔案到filePath中  
        poiUtil.write2FilePath(hssfWorkbook, filePath);  
    }  
  
}  

demo:
/*開發者資料匯出功能*/
	@RequestMapping(value = "/develop_export.action")
	@ResponseBody
	public void Export(HttpServletRequest request) throws IOException {	
		Developer developer = new Developer();
        Integer pageNum = 1;
		if (request.getParameter("pageNum") != null) {
			pageNum = Integer.parseInt(request.getParameter("pageNum"));					
		}
		developer.setPageNum((pageNum - 1) * 10);
		developer.setPageSize(10);
		List<Developer> develpers = developerService
				.selectByDevelopers(developer);
		
		 List<Map<String, Object>> headInfoList = new ArrayList<Map<String,Object>>(); 
         Map<String, Object> itemMap = new HashMap<String, Object>(); 
         itemMap.put("title", "開發者編號"); 
         itemMap.put("columnWidth", 25); 
         itemMap.put("dataKey", "XH1"); 
         headInfoList.add(itemMap); 
         
         itemMap = new HashMap<String, Object>(); 
         itemMap.put("title", "賬戶"); 
         itemMap.put("columnWidth", 50); 
         itemMap.put("dataKey", "XH2"); 
         headInfoList.add(itemMap); 
         
         itemMap = new HashMap<String, Object>(); 
         itemMap.put("title", "唯一編號"); 
         itemMap.put("columnWidth", 50); 
         itemMap.put("dataKey", "XH3"); 
         headInfoList.add(itemMap); 
 
         itemMap = new HashMap<String, Object>(); 
         itemMap.put("title", "真實姓名"); 
         itemMap.put("columnWidth", 50); 
         itemMap.put("dataKey", "XH4"); 
         headInfoList.add(itemMap); 
 
         List<Map<String, Object>> dataList = new ArrayList<Map<String,Object>>(); 
         Map<String, Object> dataItem = null; 
         for(int i=0; i < develpers.size(); i++){ 
         dataItem = new HashMap<String, Object>(); 
         Developer de=develpers.get(i);
         dataItem.put("XH1", ""+de.getAcctId()); 
         dataItem.put("XH2", ""+de.getUsername()); 
         dataItem.put("XH3", ""+de.getOpenId()); 
         dataItem.put("XH4", ""+de.getAcctRealNm()); 
         dataList.add(dataItem); 
         } 
         POIUtil.exportExcel2FilePath("統一認證平臺開發者資料資訊","D:\\temp\\customer2.xls", headInfoList, dataList); 
		

	}


相關推薦

java +Spring MVC +MyBatis 實現Excle 匯出

第一步: package com.wlsq.kso.util; import org.apache.poi.hssf.usermodel.*; import java.io.FileOutputStream; import java.io.IOException;

基於Spring MVC + Mybatis實現多選框批量刪除

此專案基於的框架是:springmvc+mybatis,步驟如下: A.前臺程式碼: <th id="ckBox" style="text-align:center;width: 3%;"  data-bind="visible: deleteqx == '1'"

Java架構-Spring MVC+Mybatis+cms實現UC瀏覽器文章相關功能

最近公司在模擬UC瀏覽器做一個簡單的cms系統,主要針對於企業內部的文章瀏覽需求,這邊考慮使用者大多用mobile瀏覽文章內容,故使用原生的ios和android進行開發,後面也會整合html5。 使用前後端分離解決方案(服務化的方式) 文章分為普通型別、視訊型別

java企業架構 spring mvc +mybatis + KafKa+Flume+Zookeeper

spring mvc spring springmvc+mybatis redis分布式緩存 restful分布式服務 dubbo + springmvc 平臺簡介 Jeesz是一個分布式的框架,提供項目模塊化、服務化、熱插拔的思想,高度封裝安全性的Java EE快速開

好文分享--java企業架構 spring mvc +mybatis + KafKa+Flume+Zookeeper分布式架構

分布式框架 Maven Springmvc mybatis Dubbo ZooKeeper Redis FastDFS ActiveMQ 開發工具 1.Eclipse IDE:采用Maven項目管理,模塊化。 2.代碼生成:通過界面方式簡單配置,自動生

java電子商務系統源碼 Spring MVC+mybatis+spring boot+spring security

電子商務平臺 word 解決方案 功能 截圖 mybatis 互聯 包括 數據監控 鴻鵠雲商大型企業分布式互聯網電子商務平臺,推出PC+微信+APP+雲服務的雲商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺。 分布式、微服務、雲架構電子商

java企業架構 spring mvc +mybatis + KafKa+Flume+Zookeep

activit res dea cms art restful work 管理 數據庫讀寫分離 開發工具 1.Eclipse IDE:采用Maven項目管理,模塊化。 2.代碼生成:通過界面方式簡單配置,自動生成相應代碼,目前包括三種生成方式(增刪改查):單表、一對多、樹結

SSM(Spring+Spring MVC+Mybatis)開發前臺後功能完整的java開源部落格管理系統

專案描述 本專案通過SSM(SpringMVC+Mybatis+Spring)框架編寫的一個人部落格管理系統,使用hexo主題,以及MAVEN進行對專案管理,並且前端具有粒子和點選愛心效果.後端的頁面框架為bootstrap.資料庫為mysql. 執行(執行)環境 jdk8+tomcat8+mysql+

spring+spring-mvc+mybatis框架許可權的實現

/**  * 登陸的時候需要攔截器  * 框架的攔截器體現了一種設計模式(介面卡模式)  * 1)實現介面 HandlerInterceptor  * 2)繼承父類 HandlerInterceptorAdapter  *&nbs

java電子商務系統原始碼 Spring MVC+mybatis+spring cloud+spring boot+spring security

鴻鵠雲商大型企業分散式網際網路電子商務平臺,推出PC+微信+APP+雲服務的雲商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺。 分散式、微服務、雲架構電子商務平臺 java b2b2c o2o 技術解決方案 開發語言: java、j2ee 資料庫:mysql

java電子商務系統原始碼 Spring MVC+mybatis+spring cloud+sprin

鴻鵠雲商大型企業分散式網際網路電子商務平臺,推出PC+微信+APP+雲服務的雲商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺。 分散式、微服務、雲架構電子商務平臺 java b2b2c o2o 技術解決方案 開發語言: java、j2ee 資料庫:mysql

java電子商務系統源碼 Spring MVC+mybatis+spring cloud+sprin

新零售 第三方庫 blog 互聯 工具包 傳播 電子 ado 源碼 鴻鵠雲商大型企業分布式互聯網電子商務平臺,推出PC+微信+APP+雲服務的雲商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺。 分布式、微服務、雲架構電子商務平臺 java b2

java電子商務系統源碼 Spring MVC+mybatis+spring cloud+spring boot+spring security

聲明式 核心技術 配置管理 load 中間 更強 中心 sql china 鴻鵠雲商大型企業分布式互聯網電子商務平臺,推出PC+微信+APP+雲服務的雲商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺。 分布式、微服務、雲架構電子商務平臺 jav

練習搭建spring+springmvc+mybatis實現java web登陸

  關於spring、springmvc、mybatis的相關資料需要提前瞭解一下。我也只是初學者,就不介紹了。 我使用的是idea 如果有用eclipse也是類似 第一步我是用的maven來引進外部包,它很好用省得你到處去下載包。 新建一個maven專案 修改p

Spring MVC+Mybatis框架實現Junit4單元測試

作為程式設計師,我們自己在寫完程式的時候應該先做完單元測試,確認無誤以後才把程式碼提交到公司公共的系統裡面去,這樣做其實也有利於提高自己的能力,這裡做了個簡單的單元測試案列寫法。 上程式碼: /** * 配置Spring與junit4整合,junit啟動時載入sprin

mybatis註解實現 spring mvc + mybatis+velocity 框架 (附完整專案程式碼)

最近學習了一下mybatis結合網上的一些列子搭建的一個網站的框架,前端顯示用的velocity引擎,資料訪問使用mybatis+oracle,檢視訪問控制spring mvc,框架主要包括一些基本的增刪改操作以及攔截器,廢話不多說了直接開始吧!! 程式碼下載

spring mvc 通過流直接匯出文字格式(excle,csv類似)

   一邊我們匯出檔案的時候,首先會先在伺服器生成檔案,然後再通過 (路徑+檔名)的方式 來匯出。。    現在呢, 我們不需要在伺服器生成檔案, 直接匯出,應該怎樣做呢?    看demo吧! package com.broadtech.unicom.contro

Spring+SpringMVc+Mybatis實現數據庫查詢

java代碼 格式 jdb web.xml配置 set ransac load idle name 大家好,本篇博客小Y將會給大家帶來一篇SSM框架實現數據查詢的Demo,使用的數據庫是Mysql,Server是TomCat.現在的SSM整合非常流行,因為springm

分布式服務--spring mvc +mybatis + Dubbo+Zookeeper+Proxy+Restful

spring mvc+my batis kafka dubbo+zookeerper restful redis分布式緩存 雲服務子系統:後臺管理系統、Restfu服務系統、Dubbo服務/管控/監控中心Zookeeper註冊中心、報表分析系統、日誌記錄系統、定時調度系統搜索引擎系統、分布式文

eclipse搭建maven project的spring4 spring mvc mybatis

framework sta port cti https oca web工程 nis lang 一,先確定已經安裝好了Eclipse Java EE IDE for Web Developers我用的是如下版本 Version: Neon.3 Release (4.6.3)