您的位置:首页 > 编程语言 > Java开发

SpringMVC 生成Excel和PDF

2015-06-09 21:09 549 查看
要生成Excel和PDF,就要设置一个显示自定义视图的视图解析器,就是BeanNameViewResolver,所以首先在SpringMVC配置文件中加入这个视图解析器

<!--自定义视图解析器-->
<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文件了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: