日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

使用Spring MVC生成Excel文檔

系統(tǒng) 1958 0

Spring不僅支持jsp,velocity,freemarker,同時(shí)可以將數(shù)據(jù)生成到Excel,PDF等非html文檔

首先,我們編寫控制器,返回邏輯名“ ListStudentUseExcel

package ?Action;

import ?javax.servlet.http.HttpServletRequest;
import ?javax.servlet.http.HttpServletResponse;

import ?org.springframework.validation.BindException;
import ?org.springframework.web.servlet.ModelAndView;
import ?org.springframework.web.servlet.mvc.AbstractCommandController;

public ? class ?TestExcelController? extends ?AbstractCommandController? ... {



????
protected ?ModelAndView?handle(HttpServletRequest?arg0,?HttpServletResponse?arg1,?Object?arg2,?BindException?arg3)? throws ?Exception? ... {
????????
return ? null ;
????}


????
protected ?ModelAndView?handleRequestInternal(HttpServletRequest?arg0,?HttpServletResponse?arg1)? throws ?Exception? ... {
????????
return ? new ?ModelAndView( " ListStudentUseExcel " , "" , "" );
????}


}

?配置文件:

?

<? xml?version="1.0"?encoding="UTF-8" ?>
<! DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd"? >
< beans >

< bean? id ="simpleUrlMapping" ?class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
?
< property? name ="mappings" >
???
< props >
???????
< prop? key ="/excel.mvc" > TestExcelController </ prop >
???
</ props >
?
</ property >
</ bean >


< bean? id ="ListStudentUseExcel" ?class ="Action.ListStudentUseExcel" ></ bean >

< bean? id ="beanNameViewResolver" ?class ="org.springframework.web.servlet.view.BeanNameViewResolver" /> ?

< bean? id ="TestExcelController" ?class ="Action.TestExcelController" />


</ beans >

?

由于上述配置文件采用了beanNameViewResolver的當(dāng)時(shí),所以,我們要編寫一個(gè)合controller返回邏輯名相同的
ViewClass---ListStudentUseExcel,代碼如下:

?

package ?Action;

import ?java.util.ArrayList;
import ?java.util.Iterator;
import ?java.util.Map;

import ?javax.servlet.http.HttpServletRequest;
import ?javax.servlet.http.HttpServletResponse;

import ?model.Student;

import ?org.apache.poi.hssf.usermodel.HSSFCellStyle;
import ?org.apache.poi.hssf.usermodel.HSSFDataFormat;
import ?org.apache.poi.hssf.usermodel.HSSFRow;
import ?org.apache.poi.hssf.usermodel.HSSFSheet;
import ?org.apache.poi.hssf.usermodel.HSSFWorkbook;
import ?org.springframework.web.servlet.view.document.AbstractExcelView;

public ? class ?ListStudentUseExcel? extends ?AbstractExcelView? ... {

????
protected ?? void ?buildExcelDocument(Map?model,
????????????HSSFWorkbook?workbook,
????????????HttpServletRequest?request,
????????????HttpServletResponse?response)
throws ?Exception ... {

????????
??????????
// 設(shè)置response方式,使執(zhí)行此controller時(shí)候自動(dòng)出現(xiàn)下載頁(yè)面,而非直接使用excel打開
??????????response.setContentType( " APPLICATION/OCTET-STREAM " );?
??????????response.setHeader(
" Content-Disposition " ,?
??????????
" attachment;?filename=" " ? + ? " excel.xls " ? + ? " " " );?

????????
// 構(gòu)造數(shù)據(jù)
????????Student?stu1 = new ?Student( " gaoxiang1 " , " male1 " , " 20060101 " , 1 );
????????Student?stu2
= new ?Student( " gaoxiang2 " , " male2 " , " 20060102 " , 2 );
????????Student?stu3
= new ?Student( " gaoxiang3 " , " male3 " , " 20060103 " , 3 );
????????Student?stu4
= new ?Student( " gaoxiang4 " , " male4 " , " 20060104 " , 4 );
????????Student?stu5
= new ?Student( " gaoxiang5 " , " male5 " , " 20060105 " , 5 );
????????ArrayList?stuList
= new ?ArrayList();
????????stuList.add(stu1);
????????stuList.add(stu2);
????????stuList.add(stu3);
????????stuList.add(stu4);
????????stuList.add(stu5);
????????
????????
// 產(chǎn)生Excel表頭
????????HSSFSheet?sheet = workbook.createSheet( " studentList " );
????????HSSFRow?header
= sheet.createRow( 0 );? // 第0行
????????
// 產(chǎn)生標(biāo)題列
????????header.createCell(( short ) 0 ).setCellValue( " name " );
????????header.createCell((
short ) 1 ).setCellValue( " sex " );
????????header.createCell((
short ) 2 ).setCellValue( " date " );
????????header.createCell((
short ) 3 ).setCellValue( " count " );
????????HSSFCellStyle?cellStyle
= workbook.createCellStyle();
????????cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(
" mm/dd/yyyy " ));
????????
????????
// 填充數(shù)據(jù)
???????? int ?rowNum = 1 ;
????????
for ?(Iterator?iter? = ?stuList.iterator();?iter.hasNext();)? ... {
????????????Student?element?
= ?(Student)?iter.next();
????????????HSSFRow?row
= sheet.createRow(rowNum ++ );
????????????row.createCell((
short ) 0 ).setCellValue(element.getName().toString());
????????????row.createCell((
short ) 1 ).setCellValue(element.getSex().toString());
????????????row.createCell((
short ) 2 ).setCellValue(element.getDate().toString());
????????????row.getCell((
short ) 2 ).setCellStyle(cellStyle);
????????????row.createCell((
short ) 3 ).setCellValue(element.getCount());
????????}

????????
????????
// 列總和計(jì)算
????????HSSFRow?row = sheet.createRow(rowNum);
????????row.createCell((
short ) 0 ).setCellValue( " TOTAL: " );
????????String?formual
= " SUM(D2:D " + rowNum + " ) " ;? // D2到D[rowNum]單元格起(count數(shù)據(jù))
????????row.createCell(( short ) 3 ).setCellFormula(formual);
????????
????}


}

測(cè)試頁(yè)面:/exlce/ListStudentUseExcel.jsp

?

<% ... @?page?language = " java " ?contentType = " text/html;?charset=GB18030 "
????pageEncoding
= " GB18030 "
%>
<! DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >

< meta? http-equiv ="Content-Type" ?content ="text/html;?charset=GB18030" >
< title > Insert?title?here </ title >
</ head >
< body >

< input? type ="button" ?onclick ="javascript:window.location.href='<%=request.getContextPath()?%>/excel.mvc'" ?value ="download?excel" ></ input >

</ body >
</ html >

?

運(yùn)行ListStudentUseExcel.jsp,點(diǎn)擊下載按鈕,程序運(yùn)行結(jié)果及生成的excel如下:

?



使用Spring MVC生成Excel文檔


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 益阳市| 都昌县| 大庆市| 满城县| 静安区| 四平市| 通化县| 林州市| 旌德县| 尉氏县| 海晏县| 琼中| 封开县| 西城区| 宿州市| 天津市| 榆中县| 高台县| 五家渠市| 临朐县| 喀什市| SHOW| 罗山县| 鲁甸县| 巢湖市| 苏尼特右旗| 调兵山市| 安宁市| 洱源县| 霍林郭勒市| 芜湖市| 岫岩| 古蔺县| 新蔡县| 郧西县| 莆田市| 西昌市| 彰化县| 界首市| 江西省| 澳门|