/*** 导出* @param request* @param response*/@RequestMapping(value="exportInfo")public void exportInfo(HttpServletRequest request,HttpServletResponse response ){try {String[] fi_ids={"0001","0002"};//根据业务查询需要下载的信息List<Map<String, Object>> selectExportInfo = backgroundService.selectExportInfo(fi_ids);String file_name=System.currentTimeMillis()+"";String fileDir="E:"+File.separator+"upload"+File.separator+file_name+".xls";String sheetName="信息";//String[] titleRow={"企业名称","核心联系人","状态","类别"};String[] title={"name","cc_name","state","fi_tpye"};ExcelUtils2.createExcel_OneSheet(fileDir, sheetName, title);ExcelUtils2.writeToExcel_OneSheet(fileDir, sheetName, selectExportInfo, title);String fileName=fileDir.substring(fileDir.lastIndexOf("/")+1);byte[] buffer=null;  buffer = ExcelUtils.downFileByte(fileDir) ; String fileSuffixName=   fileName.substring(fileName.lastIndexOf(".")+1);response.reset(); //清除缓存response.setContentType("application/" +fileSuffixName + ";" +"charset = UTF-8"); //设置字符集和文件后缀名String name="导出信息";name = new String(name.getBytes(), "ISO-8859-1");response.setHeader("Content-Disposition","attachment; filename=" +name+"."+fileSuffixName); // 设置文件名称OutputStream toClient = new BufferedOutputStream(response.getOutputStream());  toClient.write(buffer);  toClient.flush();  toClient.close();} catch (Exception e) {e.printStackTrace();Log4jUtil.getLog4jUtil().error("导出信息异常"+e.getMessage());}}/*** 创建一个新excel.  一个sheet* * @param fileDir*            excel的路径* @param sheetName*            要创建的表格索引* @param titleRow*            excel的第一行即表格头*/public static void createExcel_OneSheet(String fileDir, String sheetName, String titleRow[]) throws Exception {// 创建workbookworkbook = new HSSFWorkbook();// 添加Worksheet(不添加sheet时生成的xls文件打开时会报错)HSSFSheet sheet1 = workbook.createSheet(sheetName);// 新建文件FileOutputStream out = null;try {// 添加表头HSSFRow row = workbook.getSheet(sheetName).createRow(0); // 创建第一行for (short i = 0; i < titleRow.length; i++) {HSSFCell cell = row.createCell(i);cell.setCellValue(titleRow[i]);}out = new FileOutputStream(fileDir);workbook.write(out);} catch (Exception e) {throw e;} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}}/*** 往excel中写入(已存在的数据无法写入).* * @param fileDir*            文件路径* @param sheetName *            表格索引* @param mapList *            需要写入的数据* @param titleRow[]*            excel的第一行即表格头* @throws Exception*/public static void writeToExcel_OneSheet(String fileDir, String  sheetName, List<Map<String, Object>> mapList,String titleRow[]) throws Exception {OutputStream out = null;// 创建workbookFile file = new File(fileDir);Workbook workBook = getWorkbok(file);Sheet sheet = workBook.getSheet(sheetName);// 删除原有数据,除了属性列int rowNumber = sheet.getLastRowNum(); // 第一行从0开始算Row row0 = sheet.getRow(0);for (int i = 1; i <= rowNumber; i++) {Row row = sheet.getRow(i);sheet.removeRow(row);}// 往Excel中写新数据for (int j = 0; j < mapList.size(); j++) {// 创建一行:从第二行开始,跳过属性列Row row = sheet.createRow(j + 1);Map<String, Object> dataMap = mapList.get(j);System.out.println(dataMap);int count = row0.getLastCellNum(); for (int k = 0; k <count; k++) {for (int i = 0; i < titleRow.length; i++) {Cell cell = row.createCell(k);if (dataMap.get(titleRow[k])!=null) {cell.setCellValue(dataMap.get(titleRow[k]).toString());}}}}// 创建文件输出流,准备输出电子表格:这个必须有,否则你在sheet上做的任何操作都不会有效out = new FileOutputStream(fileDir);workBook.write(out);}/** * 下载文件 * 返回byte[] * @param fileName 需要下载的文件名 * @return * @throws Exception */  public static byte[] downFileByte(String downLoadPath) throws Exception{  byte[] return_arraybyte=null;  InputStream ins=new FileInputStream(downLoadPath );  ByteArrayOutputStream byteOut = new ByteArrayOutputStream();  byte[] buf = new byte[1024];  int bufsize = 0;  while ((bufsize = ins.read(buf, 0, buf.length)) != -1) {  byteOut.write(buf, 0, bufsize);  }  return_arraybyte = byteOut.toByteArray();  byteOut.close();  ins.close();  return return_arraybyte;  }/***  根据业务查询需要下载的信息* @param fi_ids* @return* @throws Exception*/@Overridepublic List<Map<String, Object>> selectExportInfo(String[] fi_ids) throws Exception {String join = StringUtils.join(fi_ids, ",");List<Map<String, Object>> queryForList = jdbcTemplate.queryForList(" SELECT f.name,c.cc_name,f.state,f.fi_tpye from tb_firm_info  f LEFT JOIN tb_industry_commerce i on f.fi_id=i.fi_id LEFT JOIN (SELECT * from tb_core_contacts GROUP BY fi_id) c on f.fi_id=c.fi_id where FIND_IN_SET(f.fi_id,'"+join+"') ");return queryForList;}

java后台Controller下载文件方法相关推荐

  1. java后台批量下载文件并压缩成zip下载

    因项目需要,将服务器上的图片文件压缩打包zip,下载到本地桌面. 首先,前端js: function doQueryPic() {var picsDate = $("#picsDate&qu ...

  2. java后台批量下载文件压缩ZIP

    @RequestMapping(value = "xxx/xxx",method = RequestMethod.POST )@ResponseBodypublic Map< ...

  3. Java后台Controller实现文件下载操作

    代码 参数: 1.filePath:文件的绝对路径(d:\download\a.xlsx) 2.fileName(a.xlsx) 3.编码格式(GBK) 4.response.request不介绍了, ...

  4. 关于使用Java后台导入excel文件,读取数据后,更新数据库,并返回数据给到前端的相关问题总结

    在之前的项目中,使用到了Java后台读取excel文件数据的功能点,本想着该功能点已经做过了,这一类的应该都大差不离,不过在刚结束的一个项目中,现实给我深深的上了一课,特此编写此片博客,以作记录,并给 ...

  5. Java实现FTP下载文件到客户端(浏览器)

    目录 一.简介 二.maven依赖 三.配置类 四.工具类 4.1.服务器文件名中文处理 4.2.下载文件名中文处理 五.接口验证 一.简介   我在之前的文章(Java实现文件上传和下载)里讲过非F ...

  6. Java后台实现pdf文件在浏览器中预览

    Java后台实现pdf文件在浏览器中预览 放在服务器的pdf文件不能通过完整路径访问,想要实现的效果是浏览器访问后台接口可以预览pdf文件,暂时是把pdf文件放在本地测试 通过输出流的方式将pdf文件 ...

  7. java从url下载文件_从URL下载Java文件

    java从url下载文件 Today we will learn how to download a file from URL in java. We can use java.net.URL op ...

  8. JAVA后台Controller/servlet如何获取到从前端传来的参数

    JAVA后台Controller/servlet如何获取到从前端传来的参数 前言: 本次内容是对后台如何获取到前端传来的信息的总结: 1.前端传来数据的格式为form表单形式: 1.1 reqeust ...

  9. java ftp获取文件夹大小,java 用FTPClient 下载文件时不显示总大小?解决方案

    java 用FTPClient 下载文件时不显示总大小? FTPClient ftp = new FTPClient(); ftp.setControlEncoding("utf-8&quo ...

最新文章

  1. 有哪些工具、技巧和方法极大地提高了远程工作效率?
  2. mysql5717开发设置怎么调回来_MYSQL5.7.17设置初始密码(转)
  3. NR 5G 用户平面协议
  4. SpringBoot配置文件-yaml的用法
  5. HDU - 6975 Forgiving Matching FFT匹配字符串
  6. 罗永浩:还会给你们做手机 只是需要时间
  7. 分布式红锁的waitTime的设计原理
  8. 管理系统统一鉴权服务器,确认服务器已启用密码鉴权
  9. 模糊逻辑学习--模糊逻辑的基础
  10. 树状数组---Squared Permutation
  11. 《程序员自我修养》阅读笔记-可执行文件装载与进程
  12. 系统分析与设计——UML图总结
  13. 计算机操作员中级操作技能,计算机操作员中级操作技能试卷.doc
  14. 华为数字化IT应用工程师面试经历
  15. 习题:求1-n的阶乘之和,用一个非递归函数fac(n)求n!,n的值由主函数输入,最终得到的结果在主函数中输出。
  16. [hdu6148][Valley Numer]
  17. Android Studio学习笔记
  18. Bt(宝塔面板)安装wordpress以及如何开启最简单实用的动静分离优化
  19. Fecshop 重写功能和重写yii的Controller
  20. java中elapseTime设置新时间,Jmeter系列(44)- 详解 Elapsed time、Latency、Connect Time的含义...

热门文章

  1. 双粗虚线中间一条实线_道路中间一条白实线,一条白虚线平行,代表什么意思?...
  2. 服务器重装esxi会怎么样,记录我的家庭服务器(2)esxi6.7安装+群晖+rdm直通+踩坑记录...
  3. 五、再次执行hello-world.cc
  4. k8s之Horizontal Pod Autoscaler(Pod水平自动伸缩)
  5. u-boot之NAND启动与NOR启动的区别
  6. 多个WordPress网站之间共用用户数据的方法实现
  7. Hyper-v 添加外部虚拟交换机失败显示 以太网端口绑定失败:灾难性故障 问题解决方案
  8. JS算法:广度优先搜索(BSF)的理解
  9. 关于中文的数字转化为阿拉伯的数字的解决方法
  10. 台湾南海岸一带发生了7.1级地震