`
1260533105
  • 浏览: 14935 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Excel表格与PDF文件导出

阅读更多

view类在Spring控制器配置文件中的配置

	<!-- 配置Excel文件解析器  -->
	<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
		<!-- 配置优先级 假如存在一个excelView.jsp页面,如果这个页面的优先级大于Excel                 视图类,则直接跳转到jsp页面,而不执行到处Excel文件操作 -->
		<property name="order" value="10"/>
	</bean>
	<bean id="excelView" class="com.lovo.view.UserListViewResolver"/>
	<bean id="pdfView" class="com.lovo.view.WordListPdfView"/>

 导出Excel表格类

package com.lovo.view;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;

import com.lovo.entity.User;

/**
 * 使用静态类AbstractExcelView生成excel文件
 * @author tian
 */
public class UserListViewResolver extends AbstractExcelView {

	@Override
	protected void buildExcelDocument(Map<String, Object> map,
			HSSFWorkbook book, HttpServletRequest req, HttpServletResponse resp)
			throws Exception {
		resp.setContentType("application/vnd.ms-excel");
		
		//由于Tomcat内部编码被改成了utf-8 因此需要将告诉浏览器的中文文件名再转回成iso-8859-1
		// 浏览器才能够识别出该中文文件名
		resp.setHeader("Content-Disposition",
				"inline;filename="+new String("用户列表".getBytes(), "iso-8859-1"));
		
		HSSFSheet sheet = book.createSheet("用户列表");
		
		HSSFCell tempCell;
		tempCell = getCell(sheet, 0, 0);
		setText(tempCell, "用户名");
		tempCell = getCell(sheet, 0, 1);
		setText(tempCell, "密码");
		
		List<User> list = (List<User>) map.get("userList");
		
		for(int i=0;i<list.size();++i){
			tempCell = getCell(sheet, i+1, 0);
			setText(tempCell, list.get(i).getUsername());
			tempCell = getCell(sheet, i+1, 1);
			setText(tempCell, list.get(i).getPassword());
		}
	}

}

 导出PDF类

package com.lovo.view;

import java.awt.Color;
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.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;

public class WordListPdfView extends AbstractPdfView {

	@Override
	protected void buildPdfDocument(Map<String, Object> map, Document doc,
			PdfWriter pw, HttpServletRequest req, HttpServletResponse resp)
			throws Exception {
		resp.setHeader("Content-Disposition",
				"inline;filename="+new String("用户列表".getBytes(), "iso-8859-1"));
		
		resp.setContentType("application/pdf");
		
		List<String> words = (List<String>) map.get("words");
		
		BaseFont bfont = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
		Font font = new Font(bfont, 14, Font.BOLD, Color.BLUE);
		
		for(int i=0,len=words.size();i<len;++i){
			doc.add(new Paragraph(words.get(i), font));
		}
	}


}

 控制器中,如何实现导出功能

	/**
	 * 使用AbstractExcelView生成Excel文件
	 * 为什么返回excelView后就能跳转到UserListViewResolver???
	 * @param map
	 * @return
	 */
	@RequestMapping("/getExcel")
	public String getExcel(ModelMap map){
		List<User> list = new ArrayList<>();
		User u1 = new User("jack", "123");
		User u2 = new User("bob", "234");
		User u3 = new User("marry", "567");
		list.add(u1);
		list.add(u2);
		list.add(u3);
		
		map.addAttribute("userList", list);
		
		return "excelView";
	}
	
	@RequestMapping("/getPdf")
	public String getPdf(ModelMap map){
		List<String> words = new ArrayList<>();
		words.add("shit!");
		words.add("fuck!");
		words.add("foolish!");
		
		map.addAttribute("words", words);
		
		return "pdfView";
	}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics