`
pengjianbo1
  • 浏览: 229419 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

文档视图(PDF/Excel)

阅读更多

14.6. 文档视图(PDF/Excel)

14.6.1. 简介

对看模型数据输出的用户来说,返回一个HTML页面并不总是最好的方法。 Spring简化了根据模型数据动态输出PDF文档或Excel电子表格的工作。 这些文档即最终视图,它们将以适当的内容类型用流的形式从服务器输出,并在客户端PC相应地启动PDF或电子表格浏览器(希望如此)。

为了使用Excel视图,你需要把'poi'库加到classpath中;使用PDF的话需要iText.jar。 它们都已经包含在Spring的主发行包里。

14.6.2. 配置和安装

基于文档的视图几乎与XSLT视图的处理方式相同。 下面的内容将在前文基础上介绍,XSLT例子中的controller如何被用来渲染同一个的模型数据,分别产生PDF或Excel输出(输出文档可以用Open Office浏览和编辑)。

14.6.2.1. 文档视图定义

首先,我们修改view.properties(或等价的xml文件),增加两种文档类型的视图定义。 整个文件现在看起来是这个样子:

home.class=xslt.HomePage
home.stylesheetLocation=/WEB-INF/xsl/home.xslt
home.root=words

xl.class=excel.HomePage

pdf.class=pdf.HomePage

如果你想在一个电子表格模板基础上添加模型数据,可以在视图定义中为'url'属性指定一个文件位置。

14.6.2.2. Controller 代码

这里用的controller代码,除了视图名以外,其他的与XSLT例子中的完全一样。 当然,你可能有更聪明的做法,通过URL参数或其他方式选择视图名,这也证明了Spirng在控制器与视图的解耦方面确实非常优秀!

14.6.2.3. Excel视图子类

和在XSLT例子中一样,我们需要从适当的抽象类扩展一个具体类,以实现输出文档的行为。 对Excel来说,这意味着创建一个 org.springframework.web.servlet.view.document.AbstractExcelView(使用POI)或 org.springframework.web.servlet.view.document.AbstractJExcelView(使用JExcelApi)的子类, 并实现buildExcelDocument方法。

下面是一段使用POI生成Excel视图的完整代码,它从模型数据中取得词语列表,把它显示为电子表格中第一栏内连续的行:

package excel;

// imports omitted for brevity

public class HomePage extends AbstractExcelView {

    protected void buildExcelDocument(
        Map model,
        HSSFWorkbook wb,
        HttpServletRequest req,
        HttpServletResponse resp)
        throws Exception {
    
        HSSFSheet sheet;
        HSSFRow sheetRow;
        HSSFCell cell;

        // Go to the first sheet
        // getSheetAt: only if wb is created from an existing document
        //sheet = wb.getSheetAt( 0 );
        sheet = wb.createSheet("Spring");
        sheet.setDefaultColumnWidth((short)12);

        // write a text at A1
        cell = getCell( sheet, 0, 0 );
        setText(cell,"Spring-Excel test");

        List words = (List ) model.get("wordList");
        for (int i=0; i < words.size(); i++) {
            cell = getCell( sheet, 2+i, 0 );
            setText(cell, (String) words.get(i));

        }
    }
}

 

这是一个使用JExcelApi的版本,生成同样的Excel文件:

package excel;
				
// imports omitted for brevity

public class HomePage extends AbstractExcelView {

    protected void buildExcelDocument(Map model,
        WritableWorkbook wb,
        HttpServletRequest request,
        HttpServletResponse response)
    throws Exception {
			
        WritableSheet sheet = wb.createSheet("Spring");

        sheet.addCell(new Label(0, 0, "Spring-Excel test");
		
        List words  = (List)model.get("wordList");
        for (int i = -; i < words.size(); i++) {
            sheet.addCell(new Label(2+i, 0, (String)words.get(i));
        }
    }
}

 

注意这些API间的差别。我们发现JExcelApi使用起来更直观,而且在图像处理方面更好。 但也发现使用JExcelApi处理大文件时有些内存问题。

如果你现在修改controller的代码,让它返回名为 xl 的视图(return new ModelAndView("xl", map);), 然后再次运行你的应用,你会发现,当你请求同样的页面时,Excel电子表格被创建出来并自动开始下载。

14.6.2.4. PDF视图子类

生成PDF版本的词语列表就更简单了。 现在,你创建一个 org.springframework.web.servlet.view.document.AbstractPdfView 的子类,并实现buildPdfDocument()方法,如下:

package pdf;

// imports omitted for brevity

public class PDFPage extends AbstractPdfView {

    protected void buildPdfDocument(
        Map model,
        Document doc,
        PdfWriter writer,
        HttpServletRequest req,
        HttpServletResponse resp)
        throws Exception {
        
        List words = (List) model.get("wordList");
        
        for (int i=0; i<words.size(); i++)
            doc.add( new Paragraph((String) words.get(i)));
    
    }
}

同样地,修改controller,让它返回名为 pdf 的视图(return new ModelAndView("pdf", map);), 运行你的应用并请求同样的URL,这次将会打开一个PDF文档,列出模型数据中的每个词语。

分享到:
评论

相关推荐

    EXCEL视图教程借鉴.pdf

    EXCEL视图教程借鉴.pdf

    用spring MVC 生成Excel和PDF.docx

    文档本身就是视图,从服务器以流的方式加上内容类型返回文档,客户端PC只要运行电子表格软件或PDF浏览软件就可以浏览。下面是一个简单实现的例子:界面两个button,一个实现excel ,一个pdf.为了使用Excel电子表格,...

    Java平台Excel文档处理类库API-Free Spire.XLS for Java

    1.1 文档格式转换:Excel转PDF/图片/HTML/XPS/SVG/XML/CSV/TIFF/ET/ETT/OFD/、XML转Excel等。 1.2 文档操作:创建、合并、拆分、删除文档;设置文档属性、背景、页边距;插入分页符;文档修订、加密、数字签名;...

    别说你懂Excel:500招玩转Excel表格与数据处理 part1

    资源格式: PDF 版本: 扫描版 出版社: 科学出版社书号: 9787030371782发行时间: 2013年05月 地区: 大陆 语言: 简体中文 简介: 内容简介: 《别说你懂Excel:500招玩转Excel表格与数据处理》汇集了众多Excel应用高手的...

    flutter_filereader:Flutter实现的本地文件(pdf word excel 等)查看插件,非在线预览

    Flutter FileReader本地文件视图小部件,支持多种文件类型,例如Doc Eexcl PPT TXT等,Android由腾讯X5实现(不支持GooglePlay),iOS由WKWebView实现依靠它将此添加到包的pubspec.yaml文件中: 1.9.1 dependencies:...

    电子表格Excel教学设计.pdf

    新建工作簿[板书] 方法:1)鼠标单击常用工具栏第一个按钮(新建按钮) 2)"文件" "新建" "工作簿" 确定 (注:Word中是新建文档,PowerPoint中是新建演示文稿) 6.工作簿和工作表的关系 工作簿是计算和存储工作...

    SSH相关整合的总要资料

    它提供了对ORM工具(Hibernate,JDO,TopLink,apacheOJB,iBatis,JPA)、视图(JSP,JSTL,Title,Velocity,FreeMarker,XSLT,PDF/Excel文档视图、JasperReports报表视图)、Web框架(JSF、Struts、Tapestry、WebWork)其他技术...

    基于C#实现的一款方便、快捷的数据库文档查询、导出工具源码,多种数据库的文档查询和导出功能

    基于C#实现的一款方便、快捷的数据库文档查询、导出工具,支持Word、Excel、PDF、Html、Xml、Json、MarkDown等文档格式的导出。同时支持SqlServer、MySql、PostgreSQL、SQLite等多种数据库的文档查询和导出功能 1....

    Excel 2007数据透视表完全剖析 3/7

    完整清晰版 PDF ,有目录。共 100MB,分为7个分卷 Excel 2007 数据透视表完全剖析 OFFICE2007 作者:(美)杰莱(Jelen,B.),(美)亚历山大(Alexander,M.) 著,潘洪涛,解巧云 译 出版社:人民邮电出版社 ...

    [别说你懂Excel:500招玩转Excel表格与数据处理].前沿文化.扫描版 part2

    资源格式: PDF 版本: 扫描版 出版社: 科学出版社书号: 9787030371782发行时间: 2013年05月 地区: 大陆 语言: 简体中文 简介: 内容简介: 《别说你懂Excel:500招玩转Excel表格与数据处理》汇集了众多Excel应用高手的...

    Android Office 文档处理软件 Smart Office 3.4.8 中文多语免费版.zip

    智能办公 Smart Office 中文版是款office文档处理软件,支持普通的 Word、PPT 和 Excel 文档的编辑,预设丰富的样式。虽然现在市面上也有不少 Android Office 办公应用程序,功能上也都大同小异,正确的选择一个适合...

    D2L Tweaks-crx插件

    使用本机PDF查看器用于PDF呈现MS Word / Excel文档。 如果已安装,则使用浏览器文档编辑器。 如果可能,请使用直接链接/按钮替换标题栏下拉列表。 对于外部页面,在D2L内部呈现页面,而不是简单地提供链接。 提供转...

    安卓专业手机办公应用 Quickoffice Pro PDF v6.5.1.12 中文版.zip

    他可以方便的在手机上查看、编辑Word文档、Excel电子表格及PowerPoint幻灯片。可以作为移动办公的最小载体而随时随地编辑公文,用手机收到的邮件附件为Office文档的,也可以随时打开来查看编辑了! 软件特点: 1、...

    Spring中文帮助文档

    14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成...

    Visual C++范例开发大全源码(陈国建,清华大学出版社)

    主要内容包括Visual C++的基础界面、文档视图、对话框的调用和使用方法及常见控件的使用方法和技巧;文件系统、图形图像程序、音频与视频、键盘、光标及操作系统的应用与技巧; Visual C++数据库开发、进程和线程、...

    Excel 2007数据透视表完全剖析 1/7

    完整清晰版 PDF ,有目录。共 100MB,分为7个分卷 Excel 2007 数据透视表完全剖析 OFFICE2007 作者:(美)杰莱(Jelen,B.),(美)亚历山大(Alexander,M.) 著,潘洪涛,解巧云 译 出版社:人民邮电出版社 ...

    Excel 2007数据透视表完全剖析 5/7

    完整清晰版 PDF ,有目录。共 100MB,分为7个分卷 Excel 2007 数据透视表完全剖析 OFFICE2007 作者:(美)杰莱(Jelen,B.),(美)亚历山大(Alexander,M.) 著,潘洪涛,解巧云 译 出版社:人民邮电出版社 ...

    Excel 2007数据透视表完全剖析 4/7

    完整清晰版 PDF ,有目录。共 100MB,分为7个分卷 Excel 2007 数据透视表完全剖析 OFFICE2007 作者:(美)杰莱(Jelen,B.),(美)亚历山大(Alexander,M.) 著,潘洪涛,解巧云 译 出版社:人民邮电出版社 ...

    bank-statement-analysis:Flask应用程序从银行对帐单PDF文档生成交互式可视化图像

    Pdf到Image python包(Pdf2image) 机器学习(Scikit Learn)预测交易类别 Azure SQL数据库存储事务数据和用户登录详细信息 PowerBI可视化 在后台,该应用程序从文档中提取交易明细,预测每个交易的类别,然后将...

    PinPKM-V201525(官网发布的最后一个免费无使用限制版本)

    1.2 快速的全文搜索,可以搜索Word、PPT、Excel、PDF等各种文档中的内容 1.3 可以使用单个标签搜索,也可以使用多个标签组合过滤 2. 文档归类方法 文档可以按分类、标签、附件等各种方式进行归类整理 2.1 一个文档...

Global site tag (gtag.js) - Google Analytics