java实现下载excel功能
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功能的更多相关文章
- Java中读取Excel功能实现_POI
这里使用apache的poi进行读取excel 1,新建javaproject 项目:TestExcel 2,导入包 包下载地址:http://poi.apache.org/download.html ...
- Java 批量下载excel,并对excel赋值,压缩为zip文件(POI版)
package com.neusoft.nda.servlet; import java.io.File;import java.io.FileInputStream;import java.io.F ...
- java实现导入excel功能
实现功能: 1.Excel模板下载 2.导入excel 一.jsp效果和代码 <form id="uploadForm" target="frameFile&quo ...
- JAVA实现导出excel功能,封装通用导出工具类
引入maven <!--excel导出--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId ...
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- 【小坑】java下载excel文件
excel文件的导入导出是很常见的功能,这次做了个下载的功能,踩了一些坑,记下来避免以后重复踩…… 1.inputstream序列化问题 Could not write JSON document: ...
- Java浏览器下载文件为excel(springMVC方式)
action中的方法 /** * Excel文件下载处理 * @return */ @RequestMapping("/downloanExcel") public ModelAn ...
- java、jsp导出excel功能备份
问题踩坑: ajax请求不能下载文件 必须这样: <a href="/media">点击下载Excel</a> 或者 location.href = '/m ...
- JAVA web端JS下载excel文件
JSP代码如下: JSP端引入jquery.easyui.min.js库: <script type="text/javascript" src="<c:ur ...
随机推荐
- DevExpress如何实现皮肤的添加及本地化
DevExpress.XtraBars.Helpers.SkinHelper类允许您填充现有RibbonGalleryBarItem或任意菜单(PopupMenu或BarSubItem)项目对应的De ...
- windbg 加载dump监测蓝屏原因时出现重复的星星框提示解决办法
加载dump文件出现了重复上边的信息 总结: 要reload一下环境,说明符号库未加载出现的错误,!sym noisy 显示详细信息 ,reload重载符号库,未找到的,从服务器进行下载, 注意,第一 ...
- css font-size=0的妙用
转自:css font-size=0有什么妙用? 回答一: 问题的根源是 inline(a标签默认是display:inline) 和 inline-block (.list-info 设置的是 di ...
- javascript 高级程序设计 一
前言: 作为一个即将毕业.正在实习的大学生,我也默默的进入了开发者的行列.从一开始的c#编码狗到java程序员再到现在的JS开发者,我一直 希望自己可以在这个'万恶'的互联网时代走的更远.但是我还是一 ...
- this 关键字 详解
JS中的this关键字让很多新老JS开发人员都感到困惑.这篇文章将对this关键字进行完整地阐述.读完本文以后,您的困惑将全部消除.您将学会如何在各种不同的情形正确运用this. 我们和在英语.法语这 ...
- HapMap
HapMap五周年回顾 2011-01-12 | 作者: [关闭] 作者简介:曾长青,中国科学院北京基因组所研究员,博士生导师.CUSBEA奖学金.百人计划.杰出青年基金.首批新世纪百千万人才工程国家 ...
- Linux下通过brctl配置网桥
什么是网桥 网桥是一种在链路层实现中继,对帧进行转发的技术,根据MAC分区块,可隔离碰撞,将网络的多个网段在数据链路层连接起来的网络设备. 简单的理解就是交换机. Linux下配置网桥主要用 brct ...
- hook 9大类
HOOK技术主要分为两大类,一是内核层HOOK,一是用户层HOOK. 用户层HOOK也就是在ring3环境下hook kenerl32.dll.User3.dll.Gui32.dll.Advapi.d ...
- xagrs 指定参数位置
xargs还有指定参数位置的作用.假设我们要将目录下所有的.py文件放到Python目录中去,可以使用命令find . -name '*.py' | xargs -I {} mv {} ./Pytho ...
- day09作业—函数进阶
# 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func1(*args): sum = 0 for i in args: sum += i print(sum) func1(1 ...