e代劍客——溫柔一刀
生活就像海洋,只有意志堅強的人,才能到達彼岸
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
76 隨筆 :: 7 文章 :: 215 評論 :: 0 Trackbacks
隨筆分類
(78)
Agile(3)
(rss)
java相關(33)
(rss)
ROR(2)
(rss)
web相關(1)
(rss)
其他(11)
(rss)
開源框架(19)
(rss)
數據庫相關(8)
(rss)
生活點滴(1)
(rss)
隨筆檔案
(76)
2010年10月 (1)
2007年12月 (3)
2007年7月 (1)
2007年4月 (1)
2007年2月 (4)
2006年12月 (2)
2006年11月 (1)
2006年10月 (9)
2006年9月 (3)
2006年8月 (27)
2006年7月 (14)
2006年6月 (1)
2006年4月 (9)
java源碼
java examples
java學習源代碼檢索中心
java開源大全
spring源碼學習
友情連接
e代劍客—JavaEye
(rss)
開發文檔
hibernate中文文檔
Java2 API 規范
javascript參考手冊
MySQL中文參考手冊
Spring參考手冊
spring進階-IT實驗室
XPath 教程
搜索
最新評論
1.?re: Java應用iText動態生成PDF文件
e21e12eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
--eq23r
2.?re: Toad for oracle 教程[未登錄]
多謝!!!
--啊啊
3.?re: Toad for oracle 教程
謝了
--后來者
4.?re: Toad for oracle 教程
好人多
--hzlxm
5.?re: Toad for oracle 教程
謝謝!
--stophy
閱讀排行榜
1.?Toad for oracle 教程(11331)
2.?spring 生成Excel和PDF文件(7323)
3.?javascript獲取客戶端網卡MAC地址和IP地址和計算機名(7306)
4.?最簡單的iBatis入門例子(6619)
5.?JXL操作Excel(6488)
評論排行榜
1.?Toad for oracle 教程(109)
2.?spring、ibatis控制oracle分頁的問題 (23)
3.?最簡單的iBatis入門例子(16)
4.?德比軟件(DerbySoft)誠聘java工程師(上海)(10)
5.?spring 生成Excel和PDF文件(7)
spring 生成Excel和PDF文件
HTML頁面并不總是向用戶顯示數據輸出的最好方式,有時候需要生成不可改變的文件打印,PDF可能是種不錯的選擇。
Spring支持從數據動態生成PDF或Excel文件
下面這個簡單實現的例子實現了spring輸出PDF和Excel文件,為了使用Excel電子表格,你需要在你的classpath中加入poi-2.5.1.jar庫文件,而對PDF文件,則需要iText.jar文件。它們都包含在Spring的主發布包中。
下面是測試項目代碼:
1、控制器配置代碼
<?
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
="beanNameViewResolver"
????????class
="org.springframework.web.servlet.view.BeanNameViewResolver"
?
/>
????
<
bean?
id
="viewController"
?class
="com.zhupan.spring.ViewController"
?
/>
????
<
bean?
id
="urlMapping"
????????class
="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
>
????????
<
property?
name
="mappings"
>
????????????
<
props
>
????????????????
<
prop?
key
="/view*.shtml"
>
viewController
</
prop
>
????????????
</
props
>
????????
</
property
>
????
</
bean
>
</
beans
>
?3、用于Excel視圖的視圖子類化
為了在生成輸出文檔的過程中實現定制的行為,我們將繼承合適的抽象類。對于Excel,這包括提供一個 org.springframework.web.servlet.view.document.AbstractExcelView的子類,并實現 buildExcelDocument方法。
package
?com.zhupan.view;
import
?java.util.Date;
import
?java.util.Map;
import
?javax.servlet.http.HttpServletRequest;
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.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
?ViewExcel?
extends
?AbstractExcelView?
{
??
public
?
void
?buildExcelDocument(
?????????????Map?model,?HSSFWorkbook?workbook,
?????????????HttpServletRequest?request,?HttpServletResponse?response)
????
throws
?Exception?
{
??
???????HSSFSheet?sheet?
=
?workbook.createSheet(
"
list
"
);
???????sheet.setDefaultColumnWidth((
short
)?
12
);
???????
???????
???????HSSFCell?cell?
=
?getCell(sheet,?
0
,?
0
);
???????setText(cell,?
"
Spring?Excel?test
"
);
??
???????HSSFCellStyle?dateStyle?
=
?workbook.createCellStyle();
???????dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(
"
m/d/yy
"
));
???????cell?
=
?getCell(sheet,?
1
,?
0
);
???????cell.setCellValue(
new
?Date());
???????cell.setCellStyle(dateStyle);
???????getCell(sheet,?
2
,?
0
).setCellValue(
458
);
??
???????HSSFRow?sheetRow?
=
?sheet.createRow(
3
);
???????
for
?(
short
?i?
=
?
0
;?i?
<
?
10
;?i
++
)?
{
?????????????sheetRow.createCell(i).setCellValue(i?
*
?
10
);
???????}
??}
??
}
4、用于PDF視圖的視圖子類化
需要象下面一樣繼承org.springframework.web.servlet.view.document.AbstractPdfView,并實現buildPdfDocument()方法。
package
?com.zhupan.view;
import
?java.util.List;
import
?java.util.Map;
import
?javax.servlet.http.HttpServletRequest;
import
?javax.servlet.http.HttpServletResponse;
import
?org.springframework.web.servlet.view.document.AbstractPdfView;
import
?com.lowagie.text.Document;
import
?com.lowagie.text.Paragraph;
import
?com.lowagie.text.pdf.PdfWriter;
public
?
class
?ViewPDF?
extends
?AbstractPdfView?
{
????
public
?
void
?buildPdfDocument(Map?model,?Document?document,
????????????PdfWriter?writer,?HttpServletRequest?request,
????????????HttpServletResponse?response)?
throws
?Exception?
{
????????List?list?
=
?(List)?model.get(
"
list
"
);
????????
for
?(
int
?i?
=
?
0
;?i?
<
?list.size();?i
++
)
????????????document.add(
new
?Paragraph((String)?list.get(i)));
????}
}
5、其他文件
1)控制器ViewController
package
?com.zhupan.spring;
import
?java.util.ArrayList;
import
?java.util.HashMap;
import
?java.util.List;
import
?java.util.Map;
import
?javax.servlet.http.HttpServletRequest;
import
?javax.servlet.http.HttpServletResponse;
import
?org.springframework.web.servlet.ModelAndView;
import
?org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import
?com.zhupan.view.ViewExcel;
import
?com.zhupan.view.ViewPDF;
public
?
class
?ViewController?
extends
?MultiActionController
{
?????
?????
public
?ModelAndView?viewPDF(HttpServletRequest?request,?HttpServletResponse?response)?
throws
?Exception?
{
???????List?list?
=
?
new
?ArrayList();
???????Map?model
=
new
?HashMap();
???????list.add(
"
test1
"
);
???????list.add(
"
test2
"
);
???????model.put(
"
list
"
,list);
???????ViewPDF?viewPDF
=
new
?ViewPDF();
???????
return
?
new
?ModelAndView(viewPDF,model);
??}
?????
??????
public
?ModelAndView?viewExcel(HttpServletRequest?request,?HttpServletResponse?response)?
throws
?Exception?
{
????????????List?list?
=
?
new
?ArrayList();
????????Map?model
=
new
?HashMap();
????????list.add(
"
test1
"
);
????????list.add(
"
test2
"
);
????????model.put(
"
list
"
,list);
????????ViewExcel?viewExcel
=
new
?ViewExcel();
????????
return
?
new
?ModelAndView(viewExcel,model);
??????}
}
2)web.xml
<?
xml?version="1.0"?encoding="UTF-8"
?>
<
web-app?
version
="2.4"
?xmlns
="http://java.sun.com/xml/ns/j2ee"
????xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
????xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee?
????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
????
<
display-name
>
springPDFTest
</
display-name
>
????
<
servlet
>
????????
<
servlet-name
>
springPDFTest
</
servlet-name
>
????????
<
servlet-class
>
????????????org.springframework.web.servlet.DispatcherServlet
????????
</
servlet-class
>
????????
<
load-on-startup
>
1
</
load-on-startup
>
????
</
servlet
>
????
<
servlet-mapping
>
????????
<
servlet-name
>
springPDFTest
</
servlet-name
>
????????
<
url-pattern
>
*.shtml
</
url-pattern
>
????
</
servlet-mapping
>
????
<
welcome-file-list
>
????????
<
welcome-file
>
index.jsp
</
welcome-file
>
????
</
welcome-file-list
>
</
web-app
>
3)index.jsp
<%
@?page?contentType
=
"
text/html;?charset=gb2312
"
%>
<
a?
href
="viewPDF.shtml"
>
PDF視圖打開?
</
a
>
<
br
>
<
a?
href
="viewExcel.shtml"
>
Excel視圖打開
</
a
>
posted on 2006-10-04 12:11
溫柔一刀
閱讀(7323)
評論(7)
編輯
收藏
所屬分類:
開源框架
評論
#
re: spring 生成Excel和PDF文件
2006-10-15 17:06
曲靜波
有個問題,如果不用spring的controller或改成struts的action或servlet可以使用viewPdf 和 viewExcel嗎?
回復
更多評論
#
re: spring 生成Excel和PDF文件
2006-10-16 08:52
溫柔一刀
@曲靜波
直接是不可以的
因為它們都extends AbstractPdfView
而AbstractPdfView是spring提供的
org.springframework.web.servlet.view.document.AbstractExcelView
如果要用的話就得把spring的包導入項目
回復
更多評論
#
re: spring 生成Excel和PDF文件
2007-04-04 15:12
yangaries
我把它部署在Eclipse中,為什么單擊“Excel視圖打開”后提示“Servlet springPDFTest is not available”呢?
回復
更多評論
#
re: spring 生成Excel和PDF文件
2007-04-04 16:40
yangaries
解決了,jar包放錯地方了,呵呵。
能解釋一下在位置文件中控制是怎樣傳遞的么?
回復
更多評論
#
re: spring 生成Excel和PDF文件[未登錄]
2008-10-21 17:55
michael
請問樓上的,我也遇到同樣的問題了,你能不能告訴我詳細點的解決方案呢
回復
更多評論
#
re: spring 生成Excel和PDF文件[未登錄]
2008-10-21 17:59
michael
17:05:32,125 INFO [STDOUT] 2008-10-21 17:05:32,109 [main] ERROR org.springframe
work.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException pars
ing XML document from ServletContext resource [/WEB-INF/springPDFTest-servlet.xm
l]; nested exception is java.io.FileNotFoundException: Could not open ServletCon
text resource [/WEB-INF/springPDFTest-servlet.xml]
Caused by:
java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/
springPDFTest-servlet.xml]
------------------------------
這個是JBOSS的錯誤信息
回復
更多評論
#
re: spring 生成Excel和PDF文件
2010-03-10 16:07
XT
在 使用 Excel視圖打開 的時候有中文亂碼問題,
搞了半天都沒解決 ,樓主,再麻煩一下
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
使用OpenSessionInView模式時的一個異常問題解決方法
sping 、jxl 生成excel文件下載
spring 生成Excel和PDF文件
關于Acegi安全框架登陸后轉向的疑問
使用Acegi 1.0獲取用戶信息
Spring+Hibernate中OpenSessionInView模式運用
spring、ibatis控制oracle分頁的問題
ibatis 自帶分頁方法
Spring-Validator 說明文檔
spring對commons_fileupload和cos_fileuplaod的封裝
Powered by:
BlogJava
Copyright © 溫柔一刀
聯系偶
zhupanjava@gmail.com
溫柔一刀
主站蜘蛛池模板:
平果县
|
汕头市
|
唐山市
|
璧山县
|
西华县
|
屯留县
|
邵阳县
|
武鸣县
|
本溪
|
禹城市
|
潼南县
|
佛冈县
|
康马县
|
麟游县
|
纳雍县
|
福鼎市
|
武乡县
|
阿拉善左旗
|
普兰县
|
加查县
|
永善县
|
中山市
|
龙游县
|
道真
|
弥勒县
|
虞城县
|
海兴县
|
田林县
|
临城县
|
金阳县
|
北宁市
|
五指山市
|
葫芦岛市
|
安岳县
|
仲巴县
|
岫岩
|
博客
|
利辛县
|
松江区
|
垦利县
|
濉溪县
|