SpringMVC 生成Excel和PDF
2015-06-09 21:09
549 查看
要生成Excel和PDF,就要设置一个显示自定义视图的视图解析器,就是BeanNameViewResolver,所以首先在SpringMVC配置文件中加入这个视图解析器
其中的order属性为视图解析器的优先级,数字越小则优先级越高,而默认的InternalResourceViewResolver的order值为Integer.MAX_VALUE,所以这里设置的100肯定比这个数小,优先级就大。
意味着在请求视图的时候,SpringMVC先使用该视图解析器解析,如果无法解析,则继续使用优先级较低的InternalResourceViewResolver进行解析。
接下来写Excel视图。创建一个ExcelView类,让它继承自AbstractExcelView,然后实现其buildExcelDocument方法。具体类代码如下
接下来创建PdfView类,继承自AbstractPdfView,并实现其buildPdfDocument方法,具体代码:
接下来,创建一个controller。创建一个名为ExcelAndPDF的类,并添加两个控制器方法,使其分别跳转到对应的视图
切记,其中的返回字符串必须为对应视图的类名且第一个字母小写。
然后在index.jsp中添加入口
运行tomcat,就可以正常得到Excel和PDF文件了。
<!--自定义视图解析器--> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="100"/> </bean>
其中的order属性为视图解析器的优先级,数字越小则优先级越高,而默认的InternalResourceViewResolver的order值为Integer.MAX_VALUE,所以这里设置的100肯定比这个数小,优先级就大。
意味着在请求视图的时候,SpringMVC先使用该视图解析器解析,如果无法解析,则继续使用优先级较低的InternalResourceViewResolver进行解析。
接下来写Excel视图。创建一个ExcelView类,让它继承自AbstractExcelView,然后实现其buildExcelDocument方法。具体类代码如下
@Component public class ExcelView extends AbstractExcelView{ @Override protected void buildExcelDocument(Map<String, Object> map, org.apache.poi.hssf.usermodel.HSSFWorkbook hssfWorkbook, javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { // 新建一个工作簿 HSSFSheet sheet = hssfWorkbook.createSheet("list"); sheet.setDefaultColumnWidth(12); HSSFCell cell = getCell(sheet, 0, 0); setText(cell, "Spring Excel test"); // 得到一个单元格 cell = getCell(sheet, 1, 0); // 设置单元格的值 cell.setCellValue("日期:2008-10-23"); getCell(sheet, 2, 0).setCellValue("测试1"); getCell(sheet, 2, 1).setCellValue("测试2"); HSSFRow sheetRow = sheet.createRow(3); for (int i = 0; i < 10; i++) { sheetRow.createCell(i).setCellValue(i * 10); } } }
接下来创建PdfView类,继承自AbstractPdfView,并实现其buildPdfDocument方法,具体代码:
@Component public class PdfView extends AbstractPdfView { @Override protected void buildPdfDocument(Map<String, Object> map, com.lowagie.text.Document document, com.lowagie.text.pdf.PdfWriter pdfWriter, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { List<String> list = new ArrayList<String>(); list.add("<h1>Hello</h1>"); list.add("World"); for (int i = 0; i < list.size(); i++) document.add(new Paragraph(list.get(i))); document.addTitle("This is a PDF"); document.addHeader("Header1","Header2"); document.addAuthor("Elin"); } }
接下来,创建一个controller。创建一个名为ExcelAndPDF的类,并添加两个控制器方法,使其分别跳转到对应的视图
@Controller @RequestMapping("/ExcelAndPdf") public class ExcelAndPdf { @RequestMapping("/excel") public String excelView(){ System.out.println("Excel View"); return "excelView"; } @RequestMapping("/pdf") public String pdfView(){ System.out.println("PDF View"); return "pdfView"; } }
切记,其中的返回字符串必须为对应视图的类名且第一个字母小写。
然后在index.jsp中添加入口
<a href="ExcelAndPdf/excel">Excel</a><br> <a href="ExcelAndPdf/pdf">PDF</a>
运行tomcat,就可以正常得到Excel和PDF文件了。
相关文章推荐
- 如何在MyEclipse上耍Chrome
- Java增强循环
- 2015届华为校园招聘机试题 (3)java实现
- java基础语法1--关键字,常量,变量,运算符
- Java多线程 线程池
- JAVA中GBK转UTF-8
- CopyOnWriteArrayList操作java.lang.UnsupportedOperationException
- Java设计模式之 —— 单例(Singleton)
- Java内部类学习总结
- java 遍历Map并且获取其中的键值
- Java中的内部类详细总结
- java可变参数
- Java for LeetCode 214 Shortest Palindrome
- Java 的通信编程,用 JAVA SOCKET 编程,读服务器几个 字符,再写入本地显示?
- java多线程之生产消费问题
- 2015届华为校园招聘机试题 java实现(2)
- java多线程 ThreadPoolExecutor 策略的坑
- SpringMVC+MyBatis项目总结(四)
- Spring4+Hibernate4+junit4环境搭建
- Spring学习笔记之Spring事务及事务测试