JXLS根据excel模板生成EXCEL并下载

jxl.jar

jxls-core-0.9.9.jar

jxls-reader-0.9.9.jar

poi-3.5-FINAL.jar(必须3.5以上的版本)
其他jar根据提示可以去 http://jarvana.com/jarvana/ 查找


生成excel 传入模板文件 要生成的内容 生成文件 返回生成文件的完整路径

public static String doExcel(String from, Map beans, String to) {
     ServletContext sc = (ServletContext) ActionContext.getContext().get(
             ServletActionContext.SERVLET_CONTEXT);
     String path = sc.getRealPath("/model");
     XLSTransformer transformer = new XLSTransformer();
     String sfrom = path + "\\" + from;// 模板文件
     String sto = path + "\\" + to;// 要生成的文件
     try {
         transformer.transformXLS(sfrom, beans, sto);
     } catch (ParsePropertyException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
     return sto;
 }

下载

public static void doDownLoad(String path, String name,
         HttpServletResponse response) {
     try {
         response.reset();
         response.setHeader("Content-disposition",
                 "attachment;success=true;filename ="
                         + URLEncoder.encode(name, "utf-8"));
         BufferedInputStream bis = null;
         BufferedOutputStream bos = null;
         OutputStream fos = null;
         InputStream fis = null;
         File uploadFile = new File(path);
         fis = new FileInputStream(uploadFile);
         bis = new BufferedInputStream(fis);
         fos = response.getOutputStream();
         bos = new BufferedOutputStream(fos);
         // 弹出下载对话框
         int bytesRead = 0;
         byte[] buffer = new byte[8192];
         while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
             bos.write(buffer, 0, bytesRead);
         }
         bos.flush();
         fis.close();
         bis.close();
         fos.close();
         bos.close();
     } catch (Exception e) {
         e.printStackTrace();
     }
 }

调用:

List resultList=new ArrayList();          
for (int i = 0; i < list.size(); i++) {
    。。。。。。
    InspectionStisfaction vo=new InspectionStisfaction();
    vo.setXjrq(SystemUtil.getTimeStr2Str(
        String.valueOf(map.get("apply_date"))));
    vo.setXjsl(lxjsl);
    vo.setFcmy(lfcmy);
    vo.setMy(lmy);
    vo.setYb(lyb);
    vo.setBmy(lbmy);
    vo.setFcbmy(lfcbmy);
    resultList.add(vo);
}
     
//生成EXcel
Map beans = new HashMap();
beans.put("resultList",resultList);
String path=SystemUtil.doExcel("巡检商户满意度报表模板.xls", 
    beans, "巡检商户满意度报表.xls");
SystemUtil.doDownLoad(path, "巡检商户满意度报表.xls",this.response);
return null;

模板样式:

巡检数量(个)   总体满意度 非常满意    满意     一般         不满意    非常不满意  合计
                         
${l.xjrq}         ${l.xjsl}     ${l.fcmy}   ${l.my}    ${l.yb}    ${l.bmy}   ${l.fcbmy}   $[B#+C#+D#]
                       
当月数量总计(个)  $[SUM(B4)]   $[SUM(D4)]  $[SUM(E4)] $[SUM(F4)] $[SUM(G4)] $[SUM(H4)]   $[SUM(I4)]


本文链接:JXLS根据excel模板生成EXCEL并下载,转自:http://www.cnblogs.com/yangy608/archive/2010/09/07/1820681.html

2019-03-01 15:28

知识点

相关教程

更多

这种的EXCEL表格 怎么来解析??

如图的EXCEL表格 怎么来解析??

POI 操作 Excel的主要API

Java Aspose Cells 是一种纯粹的Java授权的Excel API

使用POI操作Excel和Word

前言:今天在项目中看到有小模块是上传Excel解释后保存到数据库的操作,好奇之下去了解了如何使用Apache POI操纵Excel和Word,以下为小分享        什么是POI?  POI是Apache下的一个项目,是用Java编写的开源框架,提供API供开发者直接操作Microsoft Office(Excel,Word,PowerPoint...)  POI为我们带来了什么?  在很多的

POI 操作Excel公式

在执行这个公式

java+jsp来获取excel的数据?

首先我会在jsp页面上给用户一个上传组件,然后用户上传excel~然后自动后台去解析excel里面的数据,  我看了下网上的jxi和poi 都没怎么找到详细点的教程,希望有做过excel的师兄指点下..  我主要是想看下jxl或者poi  如何去获得excel中指定列的数据,因为我要把它放到数据库中的指定列里面去,然后jsp页面遍历显示..   不知道描述的清楚不.  问题补充:  还有 ,jxl

lucene读取word,excel,pdf

前面在写lucene入门的时候,例子只能对txt文档建立索引,不能对word,excel,pdf建立索引,要读取这些文档的内容,需要额外的jar包,好在apache这个开源组织好,提供了对这些文档解析的开源jar包  索引和查询,我就不再写出来了,前面文章有,下面只将这三种文档的读取方法贴在下面  1.首先来看WORD文档:  这里用的是poi,相关jar包(http://poi.apache.o

jxl解析excel并导入数据库

怎样用jxl解析多级表头的excel文件,确定某个单元格cell对应的标题?

原创:如何实现在Excel通过循环语句设置指定行的格式

原创:如何实现在Excel通过循环语句设置指定行的格式 一、需求: 想让excel的某些行(比如3的倍数的行)字体变成5号字 如何整; 二、实现:    Sub code()For i = 1 To Range("A65536").End(xlUp).Row    Rows(3 * i & ":" & 3 * i).Select    Sel

java jxl 操作excel 时老是这个错误

代码如下:  InputStream iso = new FileInputStream(filepath);//写入到FileInputStream  Workbook wb = Workbook.getWorkbook(iso);//得到工作薄  jxl.Sheet rs = wb.getSheet(0);  执行到此处时就报错了。错误如下:  java.lang.ClassCastExcep

solr建立pdf/word/excel索引的方法

      PS: 本文假设你已经成功的搭建了一个Solr服务器 步骤如下: (1)准备好一份Solr的源码,假设现在保存在c:\apache-solr-1.4.1\目录下 (2)从https://issues.apache.org/jira/browse/SOLR-284 上下载最新的rich.patch, libs.zip和test-files.zip三个文件 (3)解压libs.zip到c:

poi导出Excel文件遇到的问题,请教高手

我本地可以保存,可有的测试那下载保存到本地报如下图错不能下载保存,有时直接打开也不好,请了解的指点下,谢拉

POI Excel电子表格处理

Writesheet.java

POI读取数据库数据到excel

让我们假设数据表是 emp_tbl 存有雇员信息是从MySQL数据库 test 中检索

关于excel文件上传并导入数据库的问题

我一个类似这样的二维表(有跨行跨列的现象)如何导入到数据库中.  -----------------------------------------  类 |BBBBBBBBB|CCCCCCC|DDDDDDD|FFFFFFFFF|  -------------------------------------  别 |AAAA|SSSS|SSS|AAA|EEE|FFF|GGGG|DDDD|  ---

用HQL语句导出excel(1500行*100列)速度逐渐变慢

最近开发hr系统,需要用HQL语句导出excel(1500行*100列),一开始5-6行/s,执行至500行时3行/s,到1000行1行/1s。  一开始认为是jxl写入速度越来越慢,去掉写入excel,依旧是慢。  然后怀疑到hibernate的查询上,每一行都涉及到6,7条hql语句。  但不明白为什么查询会减速执行,而不是匀速?  问题补充:  可以排除数据库执行sql语句的因素。  hib

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案