SpringMVC 生成Excel和PDF

要生成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文件了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值