1. 程式人生 > >springmvc 中使用poi匯出excel

springmvc 中使用poi匯出excel

看了一些poi匯出excel的部落格

原文地址         http://blog.csdn.net/wangchangpen62/article/details/44410967

匯出excel 工具類的寫法

package com.fuiou.MyProject.unit;

import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

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.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;

public class ExportExcelUtils {
	
	private String title; // 匯出表格的表名
	
	private String[] rowName;// 匯出表格的列名
	
	private List<Object[]>  dataList = new ArrayList<Object[]>(); // 物件陣列的List集合
	
	private HttpServletResponse  response;
	

	// 傳入要匯入的資料
	public ExportExcelUtils(String title,String[] rowName,List<Object[]>  dataList,HttpServletResponse  response){
		this.title=title;
		this.rowName=rowName;
		this.dataList=dataList;
		this.response = response;
	}
	
	// 匯出資料
	public void exportData(){
		try {
			HSSFWorkbook workbook =new HSSFWorkbook(); // 建立一個excel物件
			HSSFSheet sheet =workbook.createSheet(title); // 建立表格
			// 產生表格標題行
			HSSFRow rowm  =sheet.createRow(0);  // 行
			HSSFCell cellTiltle =rowm.createCell(0);  // 單元格
			
			// sheet樣式定義
			HSSFCellStyle columnTopStyle = this.getColumnTopStyle(workbook); // 頭樣式
			HSSFCellStyle style = this.getStyle(workbook);  // 單元格樣式
			/**
			 * 引數說明
			 * 從0開始   第一行 第一列 都是從角標0開始
			 * 行 列 行列    (0,0,0,5)  合併第一行 第一列  到第一行 第六列
			 * 起始行,起始列,結束行,結束列
			 * 
			 * new Region()  這個方法使過時的
			 */
			// 合併第一行的所有列
			sheet.addMergedRegion(new CellRangeAddress(0, (short) 0, 0, (short) (rowName.length-1)));
			cellTiltle.setCellStyle(columnTopStyle);
			cellTiltle.setCellValue(title); 
			
			int columnNum = rowName.length;  // 表格列的長度
			HSSFRow rowRowName = sheet.createRow(1);  // 在第二行建立行
			HSSFCellStyle cells =workbook.createCellStyle();
			cells.setBottomBorderColor(HSSFColor.BLACK.index);  
			rowRowName.setRowStyle(cells);
			
			// 迴圈 將列名放進去
			for (int i = 0; i < columnNum; i++) {
				HSSFCell  cellRowName = rowRowName.createCell((int)i);
				cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); // 單元格型別
				
				HSSFRichTextString text = new HSSFRichTextString(rowName[i]);  // 得到列的值
				cellRowName.setCellValue(text); // 設定列的值
				cellRowName.setCellStyle(columnTopStyle); // 樣式
			}
			
			// 將查詢到的資料設定到對應的單元格中
			for (int i = 0; i < dataList.size(); i++) {
				Object[] obj = dataList.get(i);//遍歷每個物件
				HSSFRow row = sheet.createRow(i+2);//建立所需的行數
				for (int j = 0; j < obj.length; j++) {
					 HSSFCell  cell = null;   //設定單元格的資料型別 
					 if(j==0){
						 // 第一列設定為序號
						 cell = row.createCell(j,HSSFCell.CELL_TYPE_NUMERIC);
						 cell.setCellValue(i+1);
					 }else{
						 cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);
						 if(!"".equals(obj[j]) && obj[j] != null){  
	                            cell.setCellValue(obj[j].toString());                       //設定單元格的值  
	                        }else{
	                        	cell.setCellValue("  ");
	                        }  
					 }
					 cell.setCellStyle(style); // 樣式
				}
			}
			//  讓列寬隨著匯出的列長自動適應
			 sheet.autoSizeColumn((short)0); //調整第一列寬度
			 sheet.autoSizeColumn((short)1); //調整第二列寬度
			 sheet.autoSizeColumn((short)2); //調整第三列寬度
			 sheet.autoSizeColumn((short)3); //調整第四列寬度
			 sheet.autoSizeColumn((short)4); //調整第五列寬度
			 sheet.autoSizeColumn((short)5); //調整第六列寬度
			 
			 if(workbook !=null){  
	                try  
	                {  
	                	// excel 表文件名
	                    String fileName = title + String.valueOf(System.currentTimeMillis()).substring(4, 13) + ".xls";  
	                    String fileName11 = URLEncoder.encode(fileName,"UTF-8");
	                    String headStr = "attachment; filename=\"" + fileName11 + "\"";  
	                    response.setContentType("APPLICATION/OCTET-STREAM");  
	                    response.setHeader("Content-Disposition", headStr);  
	                    OutputStream out = response.getOutputStream();  
	                    workbook.write(out);
	                    out.flush();
	                    out.close();
	                }  
	                catch (IOException e)  
	                {  
	                    e.printStackTrace();  
	                } 
	                
	            }  
	  
	        }catch(Exception e){  
	            e.printStackTrace();  
	        }  
	          
	    }  
			
	public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {  
        
        // 設定字型  
        HSSFFont font = workbook.createFont();  
        //設定字型大小  
        font.setFontHeightInPoints((short)11);  
        //字型加粗  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        //設定字型名字   
        font.setFontName("Courier New");  
        //設定樣式;   
        HSSFCellStyle style = workbook.createCellStyle();  
        //設定底邊框;   
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);  
        //設定底邊框顏色;    
        style.setBottomBorderColor(HSSFColor.BLACK.index);  
        //設定左邊框;     
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);  
        //設定左邊框顏色;   
        style.setLeftBorderColor(HSSFColor.BLACK.index);  
        //設定右邊框;   
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);  
        //設定右邊框顏色;   
        style.setRightBorderColor(HSSFColor.BLACK.index);  
        //設定頂邊框;   
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);  
        //設定頂邊框顏色;    
        style.setTopBorderColor(HSSFColor.BLACK.index);  
        //在樣式用應用設定的字型;    
        style.setFont(font);  
        //設定自動換行;   
        style.setWrapText(false);  
        //設定水平對齊的樣式為居中對齊;    
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
        //設定垂直對齊的樣式為居中對齊;   
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  
          
        return style;  
          
  }  
	
	public HSSFCellStyle getStyle(HSSFWorkbook workbook) {  
        // 設定字型  
        HSSFFont font = workbook.createFont();  
        //設定字型大小  
        //font.setFontHeightInPoints((short)10);  
        //字型加粗  
        //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        //設定字型名字   
        font.setFontName("Courier New");  
        //設定樣式;   
        HSSFCellStyle style = workbook.createCellStyle();  
        //設定底邊框;   
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);  
        //設定底邊框顏色;    
        style.setBottomBorderColor(HSSFColor.BLACK.index);  
        //設定左邊框;     
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);  
        //設定左邊框顏色;   
        style.setLeftBorderColor(HSSFColor.BLACK.index);  
        //設定右邊框;   
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);  
        //設定右邊框顏色;   
        style.setRightBorderColor(HSSFColor.BLACK.index);  
        //設定頂邊框;   
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);  
        //設定頂邊框顏色;    
        style.setTopBorderColor(HSSFColor.BLACK.index);  
        //在樣式用應用設定的字型;    
        style.setFont(font);  
        //設定自動換行;   
        style.setWrapText(false);  
        //設定水平對齊的樣式為居中對齊;    
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
        //設定垂直對齊的樣式為居中對齊;   
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  
         
        return style;  
  }  
}  
	
	

jsp 頁面
<td><a href="${pageContext.request.contextPath}/user/exportExcel.action">匯出資料</a></td>

controller 層中的程式碼
@RequestMapping(value ="/exportExcel.action")
	public ModelAndView exportExcel(HttpServletRequest request,HttpServletResponse response){
		try {
			UserInfoPO user =new UserInfoPO();
			// 查出使用者資料
			List<UserInfoPO> userlist = userInfoService.queryList(user);
			String title ="使用者資訊表";
			String[] rowsName=new String[]{"序號","ID","使用者名稱","性別","登入id","登入密碼"};
			List<Object[]>  dataList = new ArrayList<Object[]>();
			Object[] objs = null;
			for (int i = 0; i < userlist.size(); i++) {
				UserInfoPO po =userlist.get(i);
				objs = new Object[rowsName.length];
				objs[0] = i;
				objs[1] = po.getId();
				objs[2] = po.getUserName();
				objs[3] = po.getSex();
				objs[4] = po.getLoginId();
				objs[5] = po.getLoginPassword();
				dataList.add(objs);
			}
			// 
			ExportExcelUtils ex =new ExportExcelUtils(title, rowsName, dataList,response);
			ex.exportData();
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return null;
	} 


相關推薦

SpringMVC使用POI匯出Excel

對於現在大部分的應用管理系統中,會很多用到匯出Excel,這裡我根據專案整理了一下匯出的具體實現,匯出的列表可是任意的List<Object>,具體需要根據你自己需求而定(ExcelEntity),另外需要自己定義標題(List<String> tit

SpringMVC利用POI匯出EXCEL傳引數總結

前一篇介紹了利用POI匯出EXCEL的程式,基本都屬於後端的程式,這個找網上的例子一大堆, 今天跟大家聊聊,匯出的時候前臺的訪問方式有幾種。 一般來說利用POI匯出時, 前臺如果是$ajax的方式的話會報錯,程式返回後,前臺程式會自動走到error的判斷,返回報錯,或者返回

springmvcpoi匯出Excel表格

工具類的封裝如下:package com.bgs.util;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream

springmvc + mybatis + poi匯出Excel例項

1、前端js程式碼: $("#fileExportAll").click(function(){ var start = $("#startDate").val(); var end = $("#endDate").val(

實際專案使用poi匯出excel(spring+springMVC+Mybatis環境下)

1,需要匯出的原始資料.即根據實際需求查詢得到的結果集作為原始資料.可能是一個list,map...看你封裝成什麼樣了(這裡是封裝成list了) 2,將原始的資料轉換到excel中,具體根據資料形式不同,寫法也會不同.不過這些都是大同小異的. 3,將生產好的excel檔案寫到一個路徑下(這裡都是放到t

springmvc 使用poi匯出excel

看了一些poi匯出excel的部落格 原文地址         http://blog.csdn.net/wangchangpen62/article/details/44410967 匯出excel 工具類的寫法 package com.fuiou.MyProject.

POIHSSFWorkbook匯出excel封裝的工具類

     在實際中匯出excel非常常見,於是自己封裝了一個匯出資料到excel的工具類,先附上程式碼,最後會寫出例項和解釋。   程式碼中依賴了slf4j日誌包,commons-io包的IOUtils關閉流,commons-lang和commons-collections包等包。 package

在Javaweb利用POI匯出Excel表格

場景:要求利用Excel把報表的資料匯出到本地計算機。 Javaweb生成Excel表格有很多種技術,我選擇了POI技術進行Excel表格的匯入匯出。選擇POI是因為它相容了office2007以上的版本和簡便的操作性。 在此通過簡單的例子說明如何利

【Java】SpringMVC整合poi實現excel的匯入匯出

2.特點:結構: HSSF - 提供讀寫Microsoft Excel格式檔案的功能。 XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。 HWPF - 提供讀寫Microsoft Word格式檔案的功能。 HSLF - 提供讀寫Microsof

專案使用POI匯出Excel的一些心得(包含複雜表頭和動態頁數與列數)

最近使用poi做Excel匯出較多,應用場景也各種各樣,導致基本都是按需求自己手動拼的Excel,網上的通用工具類大多不適合業務需要,簡單記錄下來以免下次用到。 通用版(根據jsp上的表格內容動態生成Excel) 工具類 @SuppressWarn

菜鳥調錯——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

Java檔案匯出excel

首先是在HTML頁面中加上匯出按鈕: <div class="ibox-body"> <div id="exampleToolbar" role="group"> <button type="button" class="btn b

使用poi匯出excel檔案

一、獲取資料     private List<PmsrT2> getPmsrT2List(HttpServletRequest request) {         try {  &

Springmvc 使用 AbstractExcelView 匯出excel

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

poi匯出excel方式和疑難

最近由於公司要做什麼資訊安保,要對匯出的檔案進行加密操作,供應商提供的api對檔案進行加密需要檔案路徑,現有的匯出都直接輸出流解決,沒辦法只能改變匯出方法,在尋找好的匯出過程試過許多方式,也遇到很蛋疼的問題。 首先匯出excel的方式目前發現以下3種,1:最常用的輸出流形勢直接將檔案返回給客戶端。

POI匯出Excel簡單示例

 簡單示例,poi操作Excel實現中文列寬自適應。 maven專案,在pom.xml檔案中引入poi的jar包依賴。 非maven專案需要先下載poi相關jar包匯入。 <dependency> <groupId>org.apache.poi&