电脑技术学习

Java操作Excel、PDF文件(2)

dn001

  <?xml version="1.0" encoding="UTF-8"?>

  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

  <beans>

  <bean id="beanNameViewResolver"

  class="org.springframework.web.servlet.view.BeanNameViewResolver" />

  <bean id="viewController" class="com.zhupan.spring.ViewController" />

  <bean id="urlMapping"

  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

  <property name="mappings">

  <props>

  <prop key="/view*.shtml">viewController</prop>

  </props>

  </property>

  </bean>

  </beans>

  3、用于Excel视图的视图子类化

  为了在生成输出文档的过程中实现定制的行为,我们将继承合适的抽象类。对于Excel,这包括提供一个 org.springframework.web.servlet.view.document.AbstractExcelView的子类,并实现 buildExcelDocument方法。

  Java代码

  public class ViewExcel extends AbstractExcelView {

  public void buildExcelDocument(

  Map model, HSSFWorkbook workbook,

  HttpServletRequest request, HttpServletResponse response)

  throws Exception {

  HSSFSheet sheet = workbook.createSheet("list");

  sheet.setDefaultColumnWidth((short) 12);

  HSSFCell cell = getCell(sheet, 0, 0);

  setText(cell, "Spring Excel test");

  HSSFCellStyle dateStyle = workbook.createCellStyle();

  dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));

  cell = getCell(sheet, 1, 0);

  cell.setCellValue(new Date());

  cell.setCellStyle(dateStyle);

  getCell(sheet, 2, 0).setCellValue(458);

  HSSFRow sheetRow = sheet.createRow(3);

  for (short i = 0; i < 10; i++) {

  sheetRow.createCell(i).setCellValue(i * 10);

  }

  }

  }

  public class ViewExcel extends AbstractExcelView {

  public void buildExcelDocument(

  Map model, HSSFWorkbook workbook,

  HttpServletRequest request, HttpServletResponse response)

  throws Exception {

  HSSFSheet sheet = workbook.createSheet("list");

  sheet.setDefaultColumnWidth((short) 12);

  HSSFCell cell = getCell(sheet, 0, 0);

  setText(cell, "Spring Excel test");

  HSSFCellStyle dateStyle = workbook.createCellStyle();

  dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));

  cell = getCell(sheet, 1, 0);

  cell.setCellValue(new Date());

  cell.setCellStyle(dateStyle);

  getCell(sheet, 2, 0).setCellValue(458);

  HSSFRow sheetRow = sheet.createRow(3);

  for (short i = 0; i < 10; i++) {

  sheetRow.createCell(i).setCellValue(i * 10);

  }

  }

  }

  4、用于PDF视图的视图子类化

  需要象下面一样继承org.springframework.web.servlet.view.document.AbstractPdfView,并实现buildPdfDocument()方法。

  Java代码

  public class ViewPDF extends AbstractPdfView {

  public void buildPdfDocument(Map model, Document document,

  PdfWriter writer, HttpServletRequest request,

  HttpServletResponse response) throws Exception {

  List list = (List) model.get("list");

  for (int i = 0; i < list.size(); i++)

  document.add(new Paragraph((String) list.get(i)));

  }

  }

  public class ViewPDF extends AbstractPdfView {

  public void buildPdfDocument(Map model, Document document,

  PdfWriter writer, HttpServletRequest request,

  HttpServletResponse response) throws Exception {

  List list = (List) model.get("list");

  for (int i = 0; i < list.size(); i++)

  document.add(new Paragraph((String) list.get(i)));

  }

  }

  5、其他文件

  1)控制器ViewController

  Java代码

  public class ViewController extends MultiActionController{

  public ModelAndView viewPDF(HttpServletRequest request, HttpServletResponse response) throws Exception {

  List list = new ArrayList();

  Map model=new HashMap();

  list.add("test1");

  list.add("test2");

  model.put("list",list);

  ViewPDF viewPDF=new ViewPDF();

  return new ModelAndView(viewPDF,model);

  }

  public ModelAndView viewExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {

  List list = new ArrayList();

  Map model=new HashMap();

  list.add("test1");

  list.add("test2");

  model.put("list",list);

  ViewExcel viewExcel=new ViewExcel();

  return new ModelAndView(viewExcel,model);

  }

  }

  public class ViewController extends MultiActionController{

  public ModelAndView viewPDF(HttpServletRequest request, HttpServletResponse response) throws Exception {

  List list = new ArrayList();

  Map model=new HashMap();

  list.add("test1");

  list.add("test2");

  model.put("list",list);

  ViewPDF viewPDF=new ViewPDF();

  return new ModelAndView(viewPDF,model);

  }

  public ModelAndView viewExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {

  List list = new ArrayList();

  Map model=new HashMap();

  list.add("test1");

  list.add("test2");

  model.put("list",list);

  ViewExcel viewExcel=new ViewExcel();

  return new ModelAndView(viewExcel,model);

  }

  }

  2)web.xml

  Java代码

  <?xml version="1.0" encoding="UTF-8"?>

  <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <display-name>springPDFTest</display-name>

  <servlet>

  <servlet-name>springPDFTest</servlet-name>

  <servlet-class>

  org.springframework.web.servlet.DispatcherServlet

  </servlet-class>

  <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

  <servlet-name>springPDFTest</servlet-name>

  <url-pattern>*.shtml</url-pattern>

  </servlet-mapping>

  <welcome-file-list>

  <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  </web-app>

  <?xml version="1.0" encoding="UTF-8"?>

  <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <display-name>springPDFTest</display-name>

  <servlet>

  <servlet-name>springPDFTest</servlet-name>

  <servlet-class>

  org.springframework.web.servlet.DispatcherServlet

  </servlet-class>

  <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

  <servlet-name>springPDFTest</servlet-name>

  <url-pattern>*.shtml</url-pattern>

  </servlet-mapping>

  <welcome-file-list>

  <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  </web-app>

  3)index.jsp

  Java代码

  <%@ page contentType="text/html; charset=gb2312"%>

  <a href="viewPDF.shtml">PDF视图打开 </a>

  <br>

  <a href="viewExcel.shtml">Excel视图打开</a>

  网页链接到Excel打开时乱码解决办法:

  问题:

  Java代码

  < ahref ="excel/test.xls" > 打开 </ a > 【乱码】

  < ahref ="excel/test.xls" > 打开 </ a > 【乱码】

  解决方法:

  web.xml里加上 :

  Java代码

  < mime-mapping >

  < extension > xls </ extension >

  < mime-type > application/vnd.ms-excel </ mime-type >

  </ mime-mapping >

  < mime-mapping >

  < extension > xls </ extension >

  < mime-type > application/vnd.ms-excel </ mime-type >

  </ mime-mapping >
;

标签: PDF