java批量导出excel格式数据(含每条数据的附件)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

,批量导出数据到excel中(包含每条数据对应的附件)

本程序功能功能说明

采用压缩的方法把用户要导出的excel 文件和excle数据中每条数据对应的文件,打包成一个大文件,输出到缓存区,用户通过浏览器来下载这个文件,缺陷是文件过大时,比如几个G大小的附件,ie下载很慢。建议用360等支持断点续传的功能的浏览器来下载。

Excel查看附件采用的是链接方式

详细如下面截图,点击文件链接,可以链接到相对文件位置的文件夹(因为附件可能是多个,采用的都是文件夹的相对链接的方式实现的),

压缩包内存放的文件结构:

Excel文件,reportfile(存放附件的文件夹,文件夹结构详细见代码)

每行excel 都对应相对的文件夹(reportfile内的某一个子文件夹和excel的行号相对应),如下截图,红色圈圈链接的就是对应的相应文件夹下的appfile文件夹下的文件:

//引入的类

import org.apache.tools.zip.ZipEntry;

//把文件写入到压缩对象out

import org.apache.tools.zip.ZipOutputStream;

import java.io.*;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import ermodel.HSSFCell;

import ermodel.HSSFCellStyle;

import ermodel.HSSFFont;

import ermodel.HSSFRichTextString;

import ermodel.HSSFRow;

import ermodel.HSSFSheet;

import ermodel.HSSFWorkbook;

import org.apache.poi.hssf.util.HSSFCellUtil;

import org.apache.poi.hssf.util.HSSFColor;

import org.apache.poi.hssf.util.Region;

import ermodel.Font;

import ermodel.HSSFHyperlink;

//写入压缩的文件对象

privatevoid zipfileinfo(ZipOutputStream out, File f, String base) throws Exception

{

//记录文件“f”对象在压缩包中的位置及压缩后的文件名称:

out.putNextEntry(new ZipEntry(base));、

// 写入压缩文件对象

FileInputStream in = new FileInputStream(f);

int b = 0;

byte[] buf = newbyte[1024];

while ((b = in.read(buf)) != -1)

{

out.write(buf, 0, b);

}

in.close();

}

// 开始压缩文件

privatevoid ziptmpfilelist(ZipOutputStream out, String factfielnamelist,

String tmpfielnamelist) throws Exception {

String[] tmpList = tmpfielnamelist.split(";");

String[] fackList = factfielnamelist.split(";");

for (int i = 0; i

File tmpfile = new File(fackList[i]);

zipfileinfo(out, tmpfile, tmpList[i].replaceAll("\\\\", "/"));

}

}

@Override

protectedvoid doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

// 存放文件的实际位置位置(绝对路径)

String factfielnamelist=

"D:\\iscm\\attachdata\\2015\\0422\\FuaiFugQArVTjpG;D:\\iscm\\a ttachdata\\2015\\0422\\HIxtANutsZrwDTZ;D:\\iscm\\attachdata\\2 015\\0422\\HIxtANutsZrwDTZ";

// 存放文件的位置(绝对路径)压缩时对应文件在压缩文件中的位置及名称String tmpfielnamelist = "reportfile\\tmp1\\appfile\\项目审批2.ipa;reportfile\\tmp1\\appfile\\项目审批

1.doc;reportfile\\tmp1\\selffile\\app.docx";

try {

// 存放临时文件的目录(绝对路径)ZipOutputStream out = new ZipOutputStream(new FileOutputStream("d:\\test.zip"));

response.reset();

response.setContentType("application/octet-stream");

response.setHeader("Content-Disposition",

"attachment;filename=test.zip");

// 输出到缓存区方式

ZipOutputStream out = new

ZipOutputStream(response.getOutputStream());

// out.setEncoding("gbk");

out.setEncoding("gb2312");

//System.out.println(zipFileName);

ziptmpfilelist(out, factfielnamelist, tmpfielnamelist);

//输出到excel中 List> result 是excel 写入的数据集合,这个需要自己重新定义.

ExportExcelUtils.exportExcelAppReoort("App报备信息", headers, columns,result, "", out);

out.close();

} catch (Exception e) {

e.printStackTrace();

}

}

创建excel对象并写入压缩包方法

/**

* 控制点导出Excel的方法

相关文档
最新文档