/**
     * 生成excel并下载
     */
    public void exportExcel(){
        
        File newFile = createNewFile();
        //File newFile = new File("d:/ss.xls");
        
        //新文件写入数据,并下载*****************************************************
        InputStream is = null;
        HSSFWorkbook workbook = null;
        HSSFSheet sheet = null;
        try {
            is = new FileInputStream(newFile);
            workbook = new HSSFWorkbook(is);
            //获取第一个sheet
            sheet = workbook.getSheetAt(0);
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        
        if(sheet != null){
            try {
                //写数据
                FileOutputStream fos = new FileOutputStream(newFile);
                HSSFRow row = sheet.getRow(4);
                HSSFCell cell = row.getCell(1);
                System.out.println(cell.getStringCellValue());
                cell.setCellValue("ssssssssssssssssssssssssssssssssssssssssssss");
                workbook.write(fos);
                fos.flush();
                fos.close();
                
                //下载
               InputStream fis = new BufferedInputStream(new FileInputStream(newFile));
               HttpServletResponse response = this.getResponse();
               byte[] buffer = new byte[fis.available()];
               fis.read(buffer);
               fis.close();
               response.reset();
               response.setContentType("text/html;charset=UTF-8");
               OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
                  response.setContentType("application/x-msdownload");
                  String newName = URLEncoder.encode("采购合同"+System.currentTimeMillis()+".xls", "UTF-8");
                  response.addHeader("Content-Disposition", "attachment;filename=\""+ newName + "\"");
                  response.addHeader("Content-Length", "" + newFile.length());
               toClient.write(buffer);
               toClient.flush();
            }
            catch(Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if (null != is) {
                        is.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        //删除创建的新文件
        //this.deleteFile(newFile);
    }
    /**
    * 复制文件
    *
    * @param s
    * 源文件
    * @param t
    * 复制到的新文件
    */

public void fileChannelCopy(File s, File t) {
        try {
            InputStream in = null;
            OutputStream out = null;
            try {
                in = new BufferedInputStream(new FileInputStream(s),1024);
                out = new BufferedOutputStream(new FileOutputStream(t),1024);
                byte[] buffer = new byte[1024];
                int len;
                while ((len=in.read(buffer))!=-1) {
                    out.write(buffer,0,len);
                }
            } finally {
                if (null != in) {
                    in.close();
                }
                if (null != out) {
                    out.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 读取excel模板,并复制到新文件中供写入和下载
     * @return
     */
    public File createNewFile(){
        //读取模板,并赋值到新文件************************************************************
        //文件模板路径
        String path = this.getRequest().getRealPath(SystemConfig.FILETEMPLATE);
        String fileName="purchaseContract.xls";
        File file=new File(path+"/"+fileName);

//保存文件的路径
        String realPath = ServletActionContext.getServletContext().getRealPath(SystemConfig.UPLOAD_FILE_DIR);
        //新的文件名
        String newFileName = "采购合同"+System.currentTimeMillis() + ".xls";
        //判断路径是否存在
        File dir = new File(realPath);
        if(!dir.exists()){
            dir.mkdirs();
        }
        //写入到新的excel
        File newFile = new File(realPath, newFileName);
        try {
            newFile.createNewFile();
            //复制模板到新文件
            fileChannelCopy(file, newFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return newFile;
    }

/**
     * 下载成功后删除
     *
     * @param files
     */
    private void deleteFile(File... files) {
        for (File file : files) {
            if (file.exists()) {
                file.delete();
            }
        }
    }

Excel 写入复制模板,写入数据并下载相关推荐

  1. poi读取excel多层表头模板写入数据并导出

    poi读取excel多层表头模板写入数据并导出 这两天刚好写excel,写了一份自定义表头的,写了一份模板的,这里展示一份读取excel模板写入数据并导出的 //title excel的名称 head ...

  2. 无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)

    本次随笔主要讲述着工作中是如何解决数据导出的,对于数据导出到excel在日常工作中大家还是比较常用的,那导出到word呢,改如何处理呢,简单的页面导出问题应该不大,但是如果是标准的公文导出呢,要保证其 ...

  3. C#基于Npoi通过特性的方式导出简单数据到Excel或基于特性以及基于Excel模板导出数据到Excel以及从Excel中把数据导入到对象中

    导出数据到Excel表格以及从Excel表格中读取数据是我们日常开发很多情况都会遇到的,这里或许只是导出一些简单的数据到excel,这里或许会按照一定的模板导出数据到excel,这里也可能需要从Exc ...

  4. java poi 模板 导出_java poi 从服务器下载模板写入数据再导出

    最近写了一个,Excel 的 写入和导出.   需求是这样的.   在新建合同的时候,会有导出合同的数据,    导出的模板是固定的,,需要在模板里面写入合同的信息. first   :  下载模板 ...

  5. PHPExcel 写入数据并下载 excel 或 保存至 excel 文件

    下载 点击下载 PHPExcel 包 代码 // 第一步 - 准备下载数据require_once "/vendor/PHPExcel/PHPExcel.php";// 导出数据 ...

  6. java pdf 报表_关于Java向PDF模板写入数据,以及java制作pdf报表的问题

    1.关于java向PDF模板写入数据 写的特别全一步一步来就行. (1)首先下载一个pdf编辑工具Adobe Acrobat DC (2)准备一个pdf模板文件(你可以把自己创建一个只有表头没有内容的 ...

  7. EasyPoi的excel模板预览与下载、导出简单/复杂数据

    官方文档地址:easypoi官网,官方仅供参考,部分描述有问题 excel模板预览 准备工作 事先将整理好的excel模板存在项目中,如图 excel模板预览代码 @GetMapping(" ...

  8. JS操作Excel读取和写入(模板操作)

    前一段时间一直在做报表,所以肯定会用到Excel的操作,但是在网上查阅资料有关JS操作excel较少,有的话,也都是老生常谈或很零碎的一些东西.本人是在实际项目中摸索出,JS读写Excel(模板)数据 ...

  9. C# 读取Excel文件,并写入word模板文档

    1.该程序是一个win32控制台程序 2.开发工具是VS2010,office是2013版的 3.需要添加以下引用 4 在C盘保存.dot模板,样式如下 6.excel中的数据格式,最好都设置为常规. ...

最新文章

  1. Lungo transition in reverse direction. 反转效果
  2. mysql near_完美解决 ERROR 1064 (42000): You have an error in your SQL syntax ... near …
  3. Charle抓包与wireshark使用
  4. leetcode 752. Open the Lock | 752. 打开转盘锁(BFS)
  5. spark集群详细搭建过程及遇到的问题解决(三)
  6. JMeter4.0以上 分布式测试报错 server failed start Listen failed on port
  7. c语言 获取可用内存大小,C语言实现获取内存信息并输出的实例
  8. Jenkins持续集成学习-搭建jenkins问题汇总
  9. echo -e <<EOF $()三种操作的意义
  10. 4位格雷码的顺序编码_格雷码的编码和译码算法.doc
  11. 项目管理助力中国企业发展
  12. 高频电子线路资料强力推荐!
  13. Ubuntu下载工具uGet+aira2
  14. g7108 android5,三星G7108V移动4G版一键Root权限获取及USB驱动
  15. 计算机巧用剪纸做画册教案,大班剪纸教案 老虎
  16. ❤520给她准备的情人节礼物~html+css+javascript漫天飞雪3D相册(含音乐)
  17. Telnet 发电子邮件 E-mail
  18. 华三路由器配置mstp多生成树协议
  19. 如何在windows11系统中打开ie11浏览网页
  20. 十七、网上商城项目(6)

热门文章

  1. 技术贴:如何跟刚认识的女孩发短信
  2. 详解美国四大OTT电视直播服务
  3. 安装使用——百家CMS微商城说明文档(2)
  4. archlinux安装-5-xfce4
  5. pymongo学习笔记
  6. activiti flowable 开源工作流引擎项目整合开发实施实践总结
  7. 《毛毛虫组》【Alpha】Scrum meeting 5
  8. 在AWS上部署一个网站
  9. 如何设置compileSdkVersion, minSdkVersion, and targetSdkVersion
  10. Excel平均值运算2种操作,不会函数也可轻松上手