java实现赋值excel模板,并在新文件中写入数据,并且下载

    /**
     * 生成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();
            }
        }
    }
时间: 2024-10-10 23:14:01

java实现赋值excel模板,并在新文件中写入数据,并且下载的相关文章

计算机二级-C语言-程序填空题-190117记录-对文件的处理,复制两个文件,往新文件中写入数据。

//给定程序的功能是,调用函数fun将指定源文件中的内容赋值到指定目标文件中,复制成功时函数返回1,失败时返回0,把复制的内容输出到终端屏幕.主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中. //重难点:对文件的处理.如何判断文件是否达到末尾,如何往文件中写入数据. 1 #include <stdio.h> 2 #include <stdlib.h> 3 int fun(char *source, char *target) 4 { FILE *fs,*f

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

java RandomAccessFile 向文件中写入数据,怎么样不覆盖原来的数据

import java.io.IOException;import java.io.RandomAccessFile;public class RandomFileAccess {public static void main(String[] args) throws IOException {RandomAccessFile raf = new RandomAccessFile("d:/abc.txt", "rw");// 你需要使用seek设置文件的偏移量ra

读取Excel模板,程序填上相应的内容,再进行下载输出给客瞳

/// <summary> /// 技术变更打印模板 /// </summary> /// <param name="OrderID">订单主键</param> /// <returns></returns> [CheckPower(ISPower = false, Name = "缺件打印模板")] public IActionResult PrintOrderChanged_QueJain(

读取excel模版修改数据后保存到新目录新文件中

获取模版文件路径: string modelExlPath = "\\xls\\文件名.xls"; // 前面“\\xls\\是文件路径”,可以如:\\Users\\Administrator\\Desktop\\ HSSFWorkbook hssfworkbookDown; //创建一个excel对象 //读入刚复制的要导出的excel文件 using (FileStream file = new FileStream(modelExlPath, FileMode.Open, Fil

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

POI向Excel中写入数据及追加数据

import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.*; import java.util.ArrayList; import java.

[Python]将Excel文件中的数据导入MySQL

Github Link 需求 现有2000+文件夹,每个文件夹下有若干excel文件,现在要将这些excel文件中的数据导入mysql. 每个excel文件的第一行是无效数据. 除了excel文件中已有的数据,还要添加一列,名为“at_company”,值为821. 流程 (1)获取excel文件列表,并根据excel文件名确定之后需要创建的table名: (2)连接mysql (3)创建table (4)插入数据 (5)断开连接 依赖模块 1. xlrd # to read excel fil