1,获取服务器现有excel文件

public List<Object[]> getObject(String filePath){

        log.info("**文件路径为:**"+filePath);

        List<Object[]> mediacelList = new ArrayList<Object[]>();

        // 构造 Workbook 对象,execelFile 是传入文件路径(获得Excel工作区)
Workbook book = null;
try
{
book = new HSSFWorkbook(new FileInputStream(filePath));
} catch (Exception e)
{
e.printStackTrace();
log.error("***获取服务器文件***",e);
} // 读取表格的第一个sheet页
Sheet sheet = book.getSheetAt(0); // 定义 row、cell
Row row; // 总共有多少行,从0开始
int totalRows = sheet.getLastRowNum() ; // 循环输出表格中的内容,首先循环取出行,再根据行循环取出列
for (int i = 0; i <= totalRows; i++) { Object[] ob = new Object[23]; row = sheet.getRow(i); // 处理空行
if(row == null){
continue ;
} // 总共有多少列,从0开始
int totalCells = row.getLastCellNum() ; for (int j = 0; j < totalCells; j++) { Object cell = row.getCell(j);
ob[j] = cell;
}
mediacelList.add(ob);
}
return mediacelList;
}

2,将步骤1返回的数据转换成excel所需要的字符串格式

    private String dataToString(List data) {

        StringBuffer temp = new StringBuffer();

        if (data != null && data.size() > 0) {

            for (int i = 0; i < data.size(); i++) {
Object[] obj = (Object[]) data.get(i);
if (obj == null)
break;
for (int j = 0; j <= obj.length - 2; j++) {
if (obj[j] == null) {
log.info("obj[j]为空===============" + obj[j]);
temp.append(" \t");
} else {
log.info("obj[" + j + "]==========================="
+ obj[j]);
temp.append(obj[j].toString() + " \t");
}
}
if (obj[obj.length - 1] == null) {
temp.append(" \n");
} else {
temp.append(obj[obj.length - 1].toString() + "\n");
}
}
}
return temp.toString();
}

3,执行下载功能

    @RequestMapping("/downLoadFailRecord")
public ModelAndView downLoadFailRecord(
HttpServletRequest request,HttpServletResponse response,
@ModelAttribute("filePath")String filePath) throws Exception{ log.info("=========下载啦啦啦啦=======进入downLoadFailRecord===========filePath:"+filePath); String excelData = ""; String str = "医路通保存失败统计记录"; excelData = medicalService.getFailMedical(filePath); log.info("*******解析的字符串为:"+excelData); response.setContentType("application/ms-txt;charset=UTF-8");
response.addHeader("Content-Disposition","attachment; filename=" + new String(str.getBytes("GBK"),"ISO8859_1") + ".xls");
response.getWriter().write(excelData);
return null;
}

ps:excel文件的xls格式默认纯数字的数据将不能正常显示,所以根据实际经验下载excel文件时设置成csv体验会更好一点

步骤如下:

2,2,将步骤1返回的数据转换成excel所需要的字符串格式,各个字段用逗号(,)隔开

    private String dataToString(List data) {

        StringBuffer temp = new StringBuffer();

        if (data == null || data.size() <= 0) {
return null;
} for (int i = 0; i < data.size(); i++) { Object[] obj = (Object[]) data.get(i); if (obj == null){
break;
} for (int j = 0; j <= obj.length - 2; j++) { if (obj[j] == null) {
temp.append(" ,");
} else {
temp.append(obj[j].toString() + " \t,");
}
} if (obj[obj.length - 1] == null) {
temp.append(" \n");
} else {
temp.append(obj[obj.length - 1].toString() + "\n");
}
} return temp.toString();
}

3,2执行下载功能

    @RequestMapping("/downLoadFailRecord")
public ModelAndView downLoadFailRecord(
HttpServletRequest request,HttpServletResponse response,
@ModelAttribute("filePath")String filePath) throws Exception{ log.debug("====进入downLoadFailRecord===========filePath:"+filePath); String excelData = ""; String str = "医路通失败统计记录"; excelData = medicalService.getFailMedical(filePath); response.setContentType("application/ms-txt;charset=UTF-8");
response.addHeader("Content-Disposition","attachment; filename=" + new String(str.getBytes("GBK"),"ISO8859_1") + ".csv");
response.getWriter().write(excelData);
return null;
}

拓展:有时候下载的csv存在乱码,则把csv文件另存为...一下就好了,就好了,尽然就好了!!!

java实现下载excel功能的更多相关文章

  1. Java中读取Excel功能实现_POI

    这里使用apache的poi进行读取excel 1,新建javaproject 项目:TestExcel 2,导入包 包下载地址:http://poi.apache.org/download.html ...

  2. Java 批量下载excel,并对excel赋值,压缩为zip文件(POI版)

    package com.neusoft.nda.servlet; import java.io.File;import java.io.FileInputStream;import java.io.F ...

  3. java实现导入excel功能

    实现功能: 1.Excel模板下载 2.导入excel 一.jsp效果和代码 <form id="uploadForm" target="frameFile&quo ...

  4. JAVA实现导出excel功能,封装通用导出工具类

    引入maven <!--excel导出--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId ...

  5. java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)

    使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...

  6. 【小坑】java下载excel文件

    excel文件的导入导出是很常见的功能,这次做了个下载的功能,踩了一些坑,记下来避免以后重复踩…… 1.inputstream序列化问题 Could not write JSON document: ...

  7. Java浏览器下载文件为excel(springMVC方式)

    action中的方法 /** * Excel文件下载处理 * @return */ @RequestMapping("/downloanExcel") public ModelAn ...

  8. java、jsp导出excel功能备份

    问题踩坑: ajax请求不能下载文件 必须这样: <a href="/media">点击下载Excel</a> 或者 location.href = '/m ...

  9. JAVA web端JS下载excel文件

    JSP代码如下: JSP端引入jquery.easyui.min.js库: <script type="text/javascript" src="<c:ur ...

随机推荐

  1. ssm介绍

    1.Spring     Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE ...

  2. IDEA工具 常用的设置

    以下均为笔者常用的的设置. 首先选择菜单栏的选项:“File” ----> “settings” 1.字体设置 (1)代码区的字体设置 如下图的选择,"Primary font&quo ...

  3. windows上安装RabbitMQ

    windows下 安装 rabbitMQ 及操作常用命令 rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 ...

  4. iOS.C

    iOS开发中C语言的应用: 1. NS_ENUM & NS_OPTIONS http://nshipster.com/ns_enum-ns_options/

  5. Qt Creator + MinGW 在windows 下的调试GDB停止工作解决

    Qt的安装配置请参考本博客本分类下的其他相关文章,本文主要整理在调试时候遇到的问题和解决方法供遇到同样问题的同学参考.由于我之前也没有任何Qt的开发基础,做的也是硬件方面设计,所以这方面基础还是比较薄 ...

  6. Delphi--最强大的开发工具(欢迎转载)

    最强大的开发工具 Delphi 目录 --------------------------------------------------------------------------- 前言 De ...

  7. php7.0-fpm.sock

    .sock  这种方式是套接字的方式连接的

  8. Python中的类方法、实例方法、静态方法

    类方法 @classmethod 在python中使用较少,类方法传入的第一个参数是 cls,是类本身: 类方法可以通过类直接调用或者通过实例直接调用,但无论哪种调用方式,最左侧传入的参数一定是类本身 ...

  9. python学习 day1 (3月1日)

    01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. 飞机 内存:临时存储数据. 8g,16g, 高铁 1,成本高. 2,断电即消失. 硬盘:长期存储大量的数据. 1T 512G等等 ...

  10. SQL中datetime和timestamp的区别

    在开发一个简单的报名程序时,要求在每一条新插入的记录后面添加一个日期字段,方便日后查询和排序.于是立即百度,发现可以使用datetime或timestamp两种日期类型来实现.这对于爱纠结的我来说是不 ...