ExcelData data = new ExcelData();
data.setHead(head);
data.setData(list);
data.setFileName(nameSPCI);
ExcelUtil.exportExcel(response, data);
public static void exportExcel(HttpServletResponse response, ExcelData data) {
log.info("导出解析开始,fileName:{}",data.getFileName());
try {
//实例化HSSFWorkbook
SXSSFWorkbook workbook = new SXSSFWorkbook();
//创建一个Excel表单,参数为sheet的名字
Sheet sheet = workbook.createSheet("sheet");
//设置表头
setTitle(workbook, sheet, data.getHead());
//设置单元格并赋值
setData(sheet, data.getData());
//设置浏览器下载
setBrowser(response, workbook, data.getFileName());
log.info("导出解析成功!");
} catch (Exception e) {
log.info("导出解析失败!");
e.printStackTrace();
}
}
/**
* 方法名:setTitle
* 功能:设置表头
* 描述:
* 创建人:typ
* 创建时间:2018/10/19 10:20
* 修改人:
* 修改描述:
* 修改时间:
*/
private static void setTitle(SXSSFWorkbook workbook, Sheet sheet, String[] str) {
try {
Row row = sheet.createRow(0);
//设置列宽,setColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度
for (int i = 0; i <= str.length; i++) {
sheet.setColumnWidth(i, 15 * 256);
}
//设置为居中加粗,格式化时间格式
CellStyle style = workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
//创建表头名称
Cell cell;
for (int j = 0; j < str.length; j++) {
cell = row.createCell(j);
cell.setCellValue(str[j]);
}
} catch (Exception e) {
log.info("导出时设置表头失败!");
e.printStackTrace();
}
}
/**
* 方法名:setData
* 功能:表格赋值
* 描述:
* 创建人:typ
* 创建时间:2018/10/19 16:11
* 修改人:
* 修改描述:
* 修改时间:
*/
private static void setData(Sheet sheet, List<Object[]> data) {
try{
int rowNum = 1;
SXSSFWorkbook book = new SXSSFWorkbook();
CellStyle styleDate=book.createCellStyle();
styleDate.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
Object fieldValue;
for (int i = 0; i < data.size(); i++) {
Row row = sheet.createRow(rowNum);
for (int j = 0; j < data.get(i).length; j++) {
Cell cellij = row.createCell(j);
fieldValue= data.get(i)[j];
if(fieldValue instanceof Integer){
cellij.setCellValue((Integer) data.get(i)[j]);
}
if(fieldValue instanceof Double){
cellij.setCellValue((Double) data.get(i)[j]);
}
if(fieldValue instanceof Date){
cellij.setCellStyle(styleDate);
cellij.setCellValue((Date) fieldValue);
}
if(fieldValue instanceof String){
cellij.setCellValue((String) data.get(i)[j]);
}
}
rowNum++;
}
log.info("表格赋值成功!");
}catch (Exception e){
log.info("表格赋值失败!");
e.printStackTrace();
}
}
/**
* 方法名:setBrowser
* 功能:使用浏览器下载
* 描述:
* 创建人:typ
* 创建时间:2018/10/19 16:20
* 修改人:
* 修改描述:
* 修改时间:
*/
private static void setBrowser(HttpServletResponse response, SXSSFWorkbook workbook, String fileName) {
try {
//清空response
response.reset();
//设置response的Header
response.setHeader("Content-Disposition", "attachment;filename*=utf-8''"+ URLEncoder.encode(fileName,"utf-8"));
if (!response.isCommitted()) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error message");
}
OutputStream os = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/vnd.ms-excel;charset=gb2312");
//将excel写入到输出流中
workbook.write(os);
workbook.close();
os.flush();
os.close();
log.info("设置浏览器下载成功!");
} catch (Exception e) {
log.info("设置浏览器下载失败!");
e.printStackTrace();
}
}
@ResponseBody
@RequestMapping(value = "/importExcelVocabularySpToos")
public AjaxResult importExcelVocabularySpToos(@RequestParam("file") MultipartFile fileName,HttpServletResponse response) throws IOException {
String name = fileName.getOriginalFilename();
if (!name.endsWith(".xls") && !name.endsWith(".xlsx")) {
System.out.println("文件不是excel类型");
} else {
Boolean isOk= vocabularySpService.importExcelVocabularySpTool(fileName,response);
System.out.println("isOk = " + isOk);
if(isOk){
return new AjaxResult(0,"成功");
}
}
return new AjaxResult(999,"失败");
}
var demoListView = $('#demoList')
,uploadListIns = upload.render({
elem: '#testList'
,url: '/importExcelVocabularySpToos' //改成您自己的上传接口
,accept: 'file'
,multiple: true
,auto: false
,bindAction: '#testListAction'
,choose: function(obj){
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function(index, file, result){
var tr = $(['<tr id="upload-' + index + '">'
, '<td>' + file.name + '</td>'
, '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>'
, '<td>等待上传</td>'
, '<td>'
, '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
, '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
, '</td>'
, '</tr>'].join(''));
//单个重传
tr.find('.demo-reload').on('click', function(){
obj.upload(index, file);
});
//删除
tr.find('.demo-delete').on('click', function(){
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
});
demoListView.append(tr);
});
}
,done: function(res, index, upload){
if(res.code===0){ //上传成功,这里的code为后台响应的code
var tr = demoListView.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
return delete this.files[index]; //删除文件队列已经上传成功的文件
}
this.error(index, upload);
}
,error: function(index, upload){
var tr = demoListView.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
});
});
java导出EXCEL这里已经执行成功了,但是流浪器没有下载
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
11条回答 默认 最新
关注你有没有找找自己原因呢,上来就给踩,我给你的答案是我项目中用的,非常好使。至于你为什么用不了,不找找原因?
导入包:import org.apache.commons.io.IOUtils;代码:
// 设置强制下载不打开 response.setContentType("application/vnd.ms-excel"); // 设置文件名 response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); response.setCharacterEncoding("UTF-8"); OutputStream out = response.getOutputStream(); //输出文件 InputStream inputStream = new FileInputStream(file); IOUtils.copy(inputStream, out); //关闭流 IOUtils.closeQuietly(inputStream); IOUtils.closeQuietly(out);评论 打赏 举报解决 2无用