版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/89818015
添加依赖
/ssm/pom.xml
。。。
<properties>
<!-- Excel工具包 JDK7最高到3.17 -->
<poi.version>3.17</poi.version>
</properties>
<dependencies>
<!-- ================================= 自定义视图 ================================= -->
<!-- poi:用于支持 .xls -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- poi-ooxml:用于支持 .xlsx -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- A Free Java-PDF library -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
。。。
SpringMVC 配置自定义视图
/ssm/src/main/resources/spring-mvc.xml
。。。
<!-- =========================== 自定义视图 =========================== -->
<!-- 通过控制器返回字符串解析视图:prefix + 控制器返回的字段串 + suffix 拼接出视图 URL-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 通过视图的名字来解析视图:order 值越小优先级越低。InternalResourceViewResolver的order默认为Integer的最大值 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="0"></property>
</bean
。。。
自定义视图
ExcelView
/ssm/src/main/java/com/jerry/ssm/views/ExcelView.java
package com.jerry.ssm.views;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.servlet.view.document.AbstractXlsxView;
import com.jerry.ssm.entity.Poem;
/**
* Excel自定义视图。 创建excel文件,用model传进来的数据填充sheet,最后输出流到客户端
* @author jerry
*/
public class ExcelView extends AbstractXlsxView {
@SuppressWarnings("unchecked")
@Override
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String fileName = new String("poem.xlsx".getBytes(), "iso8859-1");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/ms-excel");
response.setHeader("Content-Disposition", "inline; filename=" + fileName);
OutputStream outputStream = response.getOutputStream();
List<Poem> list = (List<Poem>) model.get("poemList");
// 产生Excel表头
Sheet sheet = workbook.createSheet("诗词");
Row header = sheet.createRow(0);
// 产生标题列
header.createCell(0).setCellValue("ID");
header.createCell(1).setCellValue("标题");
header.createCell(2).setCellValue("作者");
header.createCell(3).setCellValue("内容");
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("mm/dd/yyyy"));
int rowNumber = 1;
for (Poem poem : list) {
Row row = sheet.createRow(rowNumber++);
// 写入数据行
row.createCell(0).setCellValue(poem.getId());
row.createCell(1).setCellValue(poem.getTitle());
row.createCell(2).setCellValue(poem.getAuthor());
row.createCell(3).setCellValue(poem.getContent());
}
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
}
}
PDFView
/ssm/src/main/java/com/jerry/ssm/views/PDFView.java
package com.jerry.ssm.views;
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.jerry.ssm.entity.Poem;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
public class PDFView extends AbstractPdfView {
@SuppressWarnings("unchecked")
@Override
protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer,
HttpServletRequest request, HttpServletResponse response) throws Exception {
String fileName = new String("poem.pdf".getBytes(), "iso8859-1");
// 设置response方式,使执行此controller时候自动出现下载页面,而非直接使用excel打开
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
List<Poem> list = (List<Poem>) model.get("poemList");
BaseFont bfChinese = BaseFont.createFont("C://Windows//Fonts//msyh.ttf", BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);
for (Poem poem : list) {
String str = "ID: " + poem.getId()
+ "标题: " + poem.getTitle()
+ "作者: " + poem.getAuthor()
+ "正文: " + poem.getContent();
document.add(new Paragraph(str, FontChinese));
}
}
}
控制器
/ssm/src/main/java/com/jerry/ssm/controller/PoemController.java
package com.jerry.ssm.controller;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.jerry.ssm.entity.Poem;
import com.jerry.ssm.service.IPoemService;
import com.jerry.ssm.views.ExcelView;
import com.jerry.ssm.views.PDFView;
@Controller
@Scope("prototype")
public class PoemController {
@Resource
private IPoemService poemService;
。。。
/**
* 下载 excel
* http://localhost/excel
*/
@RequestMapping(value = "/excel")
public ModelAndView viewExcel() {
Map<String, Object> model = new HashMap<>();
model.put("poemList", poemService.getAll());
return new ModelAndView(new ExcelView(), model);
}
/**
* 下载 pdf
* http://localhost/pdf
*/
@RequestMapping(value = "/pdf")
public ModelAndView viewPDF() {
Map<String, Object> model = new HashMap<>();
model.put("poemList", poemService.getAll());
return new ModelAndView(new PDFView(), model);
}
}