




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
, 批量导出数据到excel中(包含每条数据对应的附件)本程序功能功能说明采用压缩的方法把用户要导出的excel 文件和excle数据中每条数据对应的文件,打包成一个大文件,输出到缓存区,用户通过浏览器来下载这个文件,缺陷是文件过大时,比如几个G大小的附件,ie下载很慢。 建议用360等支持断点续传的功能的浏览器来下载。Excel查看附件采用的是链接方式详细如下面截图,点击文件链接,可以链接到相对文件位置的文件夹(因为附件可能是多个,采用的都是文件夹的相对链接的方式实现的),压缩包内存放的文件结构:Excel文件,reportfile(存放附件的文件夹,文件夹结构详细见代码)每行excel 都对应相对的文件夹(reportfile内的某一个子文件夹和excel的行号相对应),如下截图,红色圈圈链接的就是对应的相应文件夹下的appfile文件夹下的文件:/引入的类import org.apache.tools.zip.ZipEntry;/把文件写入到压缩对象outimport 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 org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFRichTextString;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.util.HSSFCellUtil;import org.apache.poi.hssf.util.HSSFColor;import org.apache.poi.hssf.util.Region;import org.apache.poi.ss.usermodel.Font;import org.apache.poi.hssf.usermodel.HSSFHyperlink;/写入压缩的文件对象private void 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 = new byte1024;while (b = in.read(buf) != -1) out.write(buf, 0, b);in.close();/ 开始压缩文件private void ziptmpfilelist(ZipOutputStream out, String factfielnamelist,String tmpfielnamelist) throws Exception String tmpList = tmpfielnamelist.split(;);String fackList = factfielnamelist.split(;);for (int i = 0; i tmpList.length; i+) File tmpfile = new File(fackListi);zipfileinfo(out, tmpfile, tmpListi.replaceAll(, /);Overrideprotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException / 存放文件的实际位置位置(绝对路径)String factfielnamelist=D:iscmattachdata20150422FuaiFugQArVTjpG;D:iscmattachdata20150422HIxtANutsZrwDTZ;D:iscmattachdata20150422HIxtANutsZrwDTZ;/ 存放文件的位置(绝对路径)压缩时对应文件在压缩文件中的位置及名称String tmpfielnamelist = reportfiletmp1appfile项目审批2.ipa;reportfiletmp1appfile项目审批1.doc;reportfiletmp1selffileapp.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中 ListLinkedHashMap result 是excel写入的数据集合 ,这个需要自己重新定义.ExportExcelUtils.exportExcelAppReoort(App报备信息, headers, columns,result, , out);out.close(); catch (Exception e) e.printStackTrace();创建excel对象 并写入压缩包方法 /* * 控制点导出Excel的方法 * param title excel中的sheet名称 * param headers 表头 * param columns 表头对应的数据库中的列名 * param result 结果集 * param out 输出流 * param pattern 时间格式 * throws Exception */ public static void exportExcelAppReoort(String title, String headers, String columns, ListLinkedHashMap result, String filepath, ZipOutputStream out) throws Exception /java.io.FileOutputStream out=new java.io.FileOutputStream(filepath); / 声明一个工作薄 HSSFWorkbook workbook = new HSSFWorkbook(); / 生成一个表格 HSSFSheet sheet = workbook.createSheet(title); / 设置表格默认列宽度为20个字节 sheet.setDefaultColumnWidth(20); / 生成一个样式 HSSFCellStyle style = workbook.createCellStyle(); / 设置这些样式 style.setFillForegroundColor(HSSFColor.GOLD.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); / 生成一个字体 HSSFFont font = workbook.createFont(); font.setColor(HSSFColor.VIOLET.index); /font.setFontHeightInPoints(short) 12); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); / 把字体应用到当前的样式 style.setFont(font); / 指定当单元格内容显示不下时自动换行 style.setWrapText(true); / 产生表格标题行 HSSFRow row1 = sheet.createRow(0); / sheet.addMergedRegion(new CellRangeAddress(1,2,3,4); /合并单元格 sheet.addMergedRegion(new Region(0,(short)0,0,(short)19); row1.setHeight(short)600); /设置行高度 HSSFCell cell1 = row1.createCell(0); cell1.setCellStyle(style); cell1.setCellValue(title); /App报备信息 HSSFRow row = sheet.createRow(1); for (int i = 0; i headers.length; i+) HSSFCell cell = row.createCell(i); cell.setCellStyle(style); HSSFRichTextString text = new HSSFRichTextString(headersi); cell.setCellValue(text); / 遍历集合数据,产生数据行 if(result != null) int index = 2; for(LinkedHashMap m:result) row = sheet.createRow(index); int cellIndex = 0; for(String s:columns) HSSFCell cell = row.createCell(cellIndex); /cell.setCellStyle(style2); HSSFRichTextString richString = new HSSFRichTextString(m.get(s) = null ? : m.get(s).toString(); if(s.equals(appAttr) | s.equals(threeSynAttr) ) /当前记录记录附件链接的文件夹位置(文件可能多个,如果一个的话,可以自己处理直接链接指向文件) String tmp=richString.toString(); if (!(richString.toString().equals() cell.setCellValue(文件链接); HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL); l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【语文】成都市小学四年级下册期末试题
- 单元测试第二单元圆柱和圆锥提高题无答案
- 数学人教六年级下册期末重点小学试题经典套题答案
- 2025监理建设工程合同管理试题及答案
- 电力营销技能考核试题及答案库装表接电
- 2025年青海省试验检测师之交通工程题库及答案
- 2025年规程试题及参考答案
- 安全双重预防工作机制实施方案
- 意式美食节活动策划方案
- 铁牛营销方案
- 《2025同上一堂思政课》观后感10篇
- SY4201.2-2019石油天然气建设工程施工质量验收规范设备安装塔类检验批表格
- 电机的工作原理课件
- 设计质量意识培训课件
- 2025年四川省高考化学试卷真题(含答案解析)
- 2025年新玩家股东招募协议书
- 食品安全知识培训会议记录范文
- 2025年剧情短片离婚协议书
- 心理健康汇报表总结
- 药房采购员与验收员培训
- 工人受伤免责协议书
评论
0/150
提交评论