當前位置:
首頁 >
SpringMVC自定义视图 Excel视图和PDF视图
發布時間:2023/12/20
41
豆豆
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC自定义视图 Excel视图和PDF视图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、自定義視圖-Excel視圖
1、Maven依賴 引入POI
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.11</version></dependency>2、自定義視圖解析器
import java.io.OutputStream; import java.util.List; import java.util.Map;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;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;import com.cn21.calendar.spider.test.User;public class ViewExcel extends AbstractExcelView {@SuppressWarnings("unchecked")@Overrideprotected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request,HttpServletResponse response) throws Exception {String fileName = "用戶列表excel.xls"; response.setCharacterEncoding("UTF-8"); response.setContentType("application/ms-excel"); response.setHeader("Content-Disposition", "inline; filename="+new String(fileName.getBytes(),"iso8859-1")); OutputStream outputStream = response.getOutputStream();List<User> userList = (List<User>) model.get("userList");// 產生Excel表頭HSSFSheet sheet = workbook.createSheet("基本信息");HSSFRow header = sheet.createRow(0);// 產生標題列header.createCell(0).setCellValue("ID");header.createCell(1).setCellValue("名字");header.createCell(2).setCellValue("郵箱");header.createCell(3).setCellValue("密碼");HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("mm/dd/yyyy"));int rowNumber = 1;for (User user : userList) {HSSFRow row = sheet.createRow(rowNumber++);// 產生標題列row.createCell(0).setCellValue(user.getId());row.createCell(1).setCellValue(user.getName());row.createCell(2).setCellValue(user.getEmail());row.createCell(3).setCellValue(user.getPassword());}workbook.write(outputStream);outputStream.flush();outputStream.close();} }3、視圖映射配置dispather-servlet.xml
<!-- 通過order屬性來定義視圖解析器的優先級,order的值越小優先級越低 --><bean class="org.springframework.web.servlet.view.BeanNameViewResolver"><property name="order" value="0"></property></bean>四、控制器代碼示例
@RequestMapping(value = "excel")public ModelAndView viewExcel() {Map<String, Object> model = new HashMap<>();model.put("userList", getStudents());return new ModelAndView(new ViewExcel(), model);}private List<User> getStudents() {List<User> userList = new ArrayList<>();User user = new User("1", "Tome", "Tom@qq.com", "123456");userList.add(user);return userList;}五、測試結果
二、PDF視圖
1、Maven依賴包引入
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.1.0</version></dependency><dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency>2、自定義視圖解析器
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.cn21.calendar.spider.test.User; import com.lowagie.text.Document; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter;public class ViewPDF extends AbstractPdfView {@SuppressWarnings("unchecked")@Overrideprotected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer,HttpServletRequest request, HttpServletResponse response) throws Exception {String fileName = "用戶信息.pdf"; // 設置response方式,使執行此controller時候自動出現下載頁面,而非直接使用excel打開response.setCharacterEncoding("UTF-8");response.setContentType("application/octet-stream");response.setHeader("Content-Disposition","attachment; filename=" + new String(fileName.getBytes(), "iso8859-1"));List<User> userList = (List<User>) model.get("userList");BaseFont bfChinese = BaseFont.createFont("C://Windows//Fonts//simfang.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 (int i = 0; i < userList.size(); i++) {User user = userList.get(i);String value = "ID: " + user.getId() + "姓名: " + user.getName() + ",郵箱: " + user.getEmail() + ",密碼: "+ user.getPassword();document.add(new Paragraph(value, FontChinese));}} }3、視圖映射配置dispather-servlet.xml
<!-- 通過order屬性來定義視圖解析器的優先級,order的值越小優先級越低 --><bean class="org.springframework.web.servlet.view.BeanNameViewResolver"><property name="order" value="0"></property></bean>4、控制器代碼示例
@RequestMapping("pdf") public ModelAndView viewPDF(){ Map<String, Object> model = new HashMap<>();model.put("userList", getStudents()); return new ModelAndView(new ViewPDF(), model); } private List<User> getStudents() {List<User> userList = new ArrayList<>();User user = new User("1", "Tome", "Tom@qq.com", "123456");userList.add(user);return userList;}?五、測試結果
總結
以上是生活随笔為你收集整理的SpringMVC自定义视图 Excel视图和PDF视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 了解Logstash输入插件
- 下一篇: JSON (一) JSON语法和数据类