JAVA 通过POI 模版,导出excel

如有不足,欢迎指正,谢谢 !

1、Maven引入  POI jar包、模版和结果文件.rar下载

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>4.0.1</version>
</dependency>
<dependency>
  <groupId>net.sf.jxls</groupId>
  <artifactId>jxls-core</artifactId>
  <version>1.0.4</version>
</dependency>

2、工具方法如下:

package com.***.***.***;
import net.sf.jxls.transformer.XLSTransformer;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.*;
CLASS 省略。。。

/**
     *
     * @param request
     * @param response
     * @param tempPath 模版的相对路径
     * @param resultMap 结果集
     * @throws Exception
     */
    public static void excelTempExport(HttpServletRequest request,HttpServletResponse response,String tempPath, Map resultMap) {
        String tempFileName = null;
        String newFileName = null;
        File newFile = null;
        XLSTransformer transformer = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            //获得模版
            tempFileName = request.getSession().getServletContext().getRealPath(tempPath);
            //新的文件名称
            newFileName= new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
            //文件名称统一编码格式
            newFileName = URLEncoder.encode(newFileName, "utf-8");
            //生成的导出文件
            newFile = File.createTempFile(newFileName, ".xls");
            //transformer转到Excel
            transformer = new XLSTransformer();
            //将数据添加到模版中生成新的文件
            transformer.transformXLS(tempFileName, resultMap, newFile.getAbsolutePath());
            //将文件输入
            InputStream inputStream = new FileInputStream(newFile);
            // 设置response参数,可以打开下载页面
            response.reset();
            //设置响应文本格式
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + String.valueOf((newFileName + ".xls").getBytes(), "iso-8859-1"));
            //将文件输出到页面
            ServletOutputStream out = response.getOutputStream();
            bis = new BufferedInputStream(inputStream);
            bos = new BufferedOutputStream(out);
            byte[] buff = new byte[2048];
            int bytesRead;
            // 根据读取并写入
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //使用完成后关闭流
            try {
                if (bis != null) {
                    bis.close();
                }
                if (bos != null) {
                    bos.close();
                }
            } catch (IOException e) {}
        }
    }

//测试类 
@RequestMapping(value = "/exportExcelTest", method = RequestMethod.GET)public void exportExcelTest(HttpServletRequest request, HttpServletResponse response) {    Map map = new HashMap(4);    Map itemMap = null;    //商户    List<Map> merchantList = new ArrayList<Map>();    itemMap = new HashMap();    itemMap.put("id", 3);    itemMap.put("merchant_name", "张3");    itemMap.put("market_id", 1);    itemMap.put("market_name", "市场1");    merchantList.add(itemMap);    itemMap = new HashMap();    itemMap.put("id", 4);    itemMap.put("merchant_name", "张5");    itemMap.put("market_id", 2);    itemMap.put("market_name", "市场2");    merchantList.add(itemMap);    map.put("merchantList", merchantList);

    //品类    List<Map> bccList = new ArrayList<Map>();    itemMap = new HashMap();    itemMap.put("id", 1);    itemMap.put("category", "苹果");    itemMap.put("sub_category", "红富士苹果");    bccList.add(itemMap);    itemMap = new HashMap();    itemMap.put("id", 2);    itemMap.put("category", "苹果");    itemMap.put("sub_category", "国光苹果");    bccList.add(itemMap);    map.put("bccList", bccList);

    //供货商    List<Map> merchantSupplierList = new ArrayList<Map>();    itemMap = new HashMap();    itemMap.put("id", 1);    itemMap.put("supplierName", "李四");    itemMap.put("supplierShopName", "李四水果店");    merchantSupplierList.add(itemMap);    itemMap = new HashMap();    itemMap.put("id", 2);    itemMap.put("supplierName", "王五");    itemMap.put("supplierShopName", "王五蔬菜店");    merchantSupplierList.add(itemMap);    map.put("merchantSupplierList", merchantSupplierList);

    //省市区    List<Map> areaList = new ArrayList<Map>();    itemMap = new HashMap();    itemMap.put("sheng_id", 610000);    itemMap.put("sheng_name", "陕西省");    itemMap.put("shi_id", 610100);    itemMap.put("shi_name", "西安市");    itemMap.put("qu_id", 610104);    itemMap.put("qu_name", "莲湖区");    areaList.add(itemMap);    itemMap = new HashMap();    itemMap.put("sheng_id", 610000);    itemMap.put("sheng_name", "陕西省");    itemMap.put("shi_id", 610100);    itemMap.put("shi_name", "西安市");    itemMap.put("qu_id", 610113);    itemMap.put("qu_name", "雁塔区");    areaList.add(itemMap);    map.put("areaList", areaList);    ExcelTemplate.exportExcelByTemplate(request, response, map, "excelTemplate/template.xls");}

3、导出成功后结果如图:

原文地址:https://www.cnblogs.com/helloearth/p/11696507.html

时间: 2024-10-11 17:52:51

JAVA 通过POI 模版,导出excel的相关文章

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

jxls使用模版导出Excel

/**     * 使用模版导出Excel     */    @SuppressWarnings({ "unchecked", "deprecation" })    @Override    public String experExcel(Card card,HttpServletRequest request,HttpServletResponse response){        try {                    Map<Objec

基于SSM的POI导入导出Excel实战第一篇-SSM框架的整合

业务背景:在JavaWeb应用开发中,经常需要将应用系统中某些业务数据导出到Excel中,又或者需要将这些业务数据先收集到Excel然后一键导入到系统 业务需求:如何用Java实现导入导出Excel 需求分析:目前流行的Java导入导出Excel的框架有POI跟JXL,这两者的优缺点在这里我就不作比较了,感兴趣的童鞋可以自行搜索了解一下; 技术选型:从本文开始,我将分享一下如何基于SSM框架+POI实现Java应用导入导出Excel,数据库采用mysql5.6,应用服务器采用tomcat7 工具

java的poi技术读取Excel[2003-2007,2010]

这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术 :java的jxl技术导入Excel  下面是本文的项目结构: 项目中所需要的jar文件: 所用的Excel数据(2003-2007,2010都是一

使用Open Xml按模版导出Excel文件(下)

(3)将数据写入Excel 把数据写入到Excel文件是本文的关键技术.这里需要用到OpenXml.在Sdk里已经提供了足够的文件操作方法,我们就调用这些方法,将数据源的数据写到文件中. 首先我们定义了一些工具类,用于读取单元格的行列值. 在Excel中,每个单元格都有一个地址:如B3表示第二行第三列的格子,在Utility中的GetRowIndex和GetColumnIndex就是输入字符串”B3”,返回Int类型的索引2 和3.还有输入“B3”,返回列的字母“B”等等. 在WorkSheet

java的poi技术读取Excel数据

这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术 :java的jxl技术导入Excel  下面是本文的项目结构: 项目中所需要的jar文件: 所用的Excel数据(2003-2007,2010都是一

java的poi技术读取Excel数据到MySQL

这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 :java的jxl技术导入Excel  项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 1 CREATE TABLE `student_info` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `no` varchar(20) DEFAU

使用Open Xml按模版导出Excel文件(上)

完整内容请参见我的网站 http://www.iyummy.com.cn/Blog/Detail/3 我们在做应用系统中经常需要将数据库中的数据导出成为Excel文件.如果是要导出报表的话,最好是能够根据定义好的模版生成一个美观的Excel. 以前要生成有样式的Excel.一般是使用Xml形式的Excel修改,或者使用Excel的Api.前者要修改样式的话特别麻烦,后者在Asp.net里会起很多进程. 庆幸的是从office 2007开始,微软使用了OpenXml来定义office的文件.使用r

poi导入导出excel后记

续上一篇:在springmvc项目中使用poi导入导出excel http://blog.csdn.net/kingson_wu/article/details/38942967 一. 导入时,发现了不少问题,如果是导出excel之后,在里面不删除行,只是简单的修改一些数据的话,则不会出问题,但如果是删除了一些行,或者excel表不是导出的,而是另外的excel文件,里面有很多数据ctrl+a,ctrl+v生成的,那么导入的时候就会出问题,因为里面虽然看起来的数据就那么多,但是有一些数据痕迹.很

java的poi技术写Excel的Sheet

在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-2007,2010] java的poi技术读取Excel数据到MySQL java的jxl技术导入Excel java的poi技术读取和导入Excel 然而,这篇blog主要内容是关于Excel里面怎样去写Sheet数据. 那么在Excel里面什么叫做Sheet呢?如下图红色框里面的内容就是Excel的