spring 生成Excel和PDF文件

Spring支持从数据动态生成PDF或Excel文件 下面这个简单实现的例子实现了spring输出PDF和Excel文件,为了使用Excel电子表格,你需要在你的classpath中加入poi-2.5.1.jar库文件,而对PDF文件,则需要iText.jar文件。它们都包含在Spring的主发布包中。 下面是测试项目代码: 1、控制器配置代码 xml 代码 xml version="1.0" encoding="UTF-8"?> DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> viewControllerprop> props> property> bean> beans> 3、用于Excel视图的视图子类化 为了在生成输出文档的过程中实现定制的行为,我们将继承合适的抽象类。对于Excel,这包括提供一个 org.springframework.web.servlet.view.document.AbstractExcelView的子类,并实现 buildExcelDocument方法。java 代码 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()方法。java 代码 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)控制器ViewControllerjava 代码 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.xmlxml 代码 xml version="1.0" encoding="UTF-8"?> springPDFTestdisplay-name> springPDFTestservlet-name> org.springframework.web.servlet.DispatcherServlet servlet-class> 1load-on-startup> servlet> springPDFTestservlet-name> *.shtmlurl-pattern> servlet-mapping> index.jspwelcome-file> welcome-file-list> web-app> 3)index.jsp PDF视图打开 a>
Excel视图打开a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值