//此处使用的是layui,jquery

<button type="button" class="layui-btn layui-btn-normal layui-btn-radius" id="exportExcel">导出</button>$(document).on('click',"#exportExcel",function(){// var loading = layer.msg('导出中请稍后...', {icon: 16, shade: 0.3, time:0});//遮罩层开启window.open("../plan/exportPlanExcel");// layer.close(loading);//遮罩层关闭});

//后台,一个公共类

package com.example.demo.job.util;import org.apache.poi.hssf.usermodel.*;public class ExcelUtil {/*** 导出Excel* @param sheetName sheet名称* @param title 标题* @param values 内容,可以修改为list  或者 map* @param wb HSSFWorkbook对象* @return*/public static HSSFWorkbook getHSSFWorkbook(String sheetName, String []title, String [][]values, HSSFWorkbook wb){// 第一步,创建一个HSSFWorkbook,对应一个Excel文件if(wb == null){wb = new HSSFWorkbook();}// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet(sheetName);// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制HSSFRow row = sheet.createRow(0);// 第四步,创建单元格,并设置值表头 设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式//声明列对象HSSFCell cell = null;//创建标题for(int i=0;i<title.length;i++){cell = row.createCell(i);cell.setCellValue(title[i]);cell.setCellStyle(style);}//创建内容for(int i=0;i<values.length;i++){row = sheet.createRow(i + 1);for(int j=0;j<values[i].length;j++){//将内容按顺序赋给对应的列对象row.createCell(j).setCellValue(values[i][j]);}}return wb;}}

//controller调用代码

/*** 导出*/@RequestMapping(value = "exportPlanExcel", method = RequestMethod.GET)@ResponseBodypublic void exportPlanExcel(HttpServletRequest request, HttpServletResponse response){Map<String,Object> map = new HashMap<>();//准备数据List<Map<String,Object>> list=cellinfoMapper.selectDataByPage();String title = "序号,城市,数量";    //String key = "city,cellNum";  //SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");String fileNameTime = "D://方案详情"+sdf.format(new Date())+".xlsx";
//        String code = BeanUtils.generateExcel(list,title,key,fileNameTime,response);sendExcel(list,title,key,response);}public void sendExcel(List<Map<String,Object>> list,String title,String key, HttpServletResponse response){DecimalFormat df = new DecimalFormat("#.00");//map.get(key)中的keyString[] keys = key.split(",");//excel标题String[] titles = title.split(",");//excel文件名String fileName = "方案详情"+System.currentTimeMillis()+".xls";//sheet名String sheetName = "方案详情";//  将数据转换成String [][] 二维数组(具体情况根据自身需求定)String [][] content = new String[list.size()][titles.length];int id=1;int i=0;for (Map<String,Object> map: list) {content[i][0] = String.valueOf(id);content[i][1] = String.valueOf(map.get(keys[0]));content[i][2] = String.valueOf(map.get(keys[1]));id++;i++;}//创建HSSFWorkbookHSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, titles, content, null);//响应到客户端this.setResponseHeader(response, fileName);OutputStream os = null;try {os = response.getOutputStream();wb.write(os);os.flush();os.close();} catch (IOException e) {e.printStackTrace();}}//发送响应流方法public void setResponseHeader(HttpServletResponse response, String fileName) {try {try {fileName = new String(fileName.getBytes(),"ISO8859-1");} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}response.setContentType("application/octet-stream;charset=ISO8859-1");response.setHeader("Content-Disposition", "attachment;filename="+ fileName);response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");} catch (Exception ex) {ex.printStackTrace();}}

//这里还有个下载的,复制来的,没验证.先留着,,前端也跟上边一样,一个按钮,一个点击事件,里边有个window.open("路径")或者window.location.href("路径")之类的方法

@RequestMapping("/download")public void download(String content, HttpServletResponse response) {try {// 要下载的文件的路径。File file = new File(content);// 取得文件名。String filename = file.getName();// 以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(content));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");response.setCharacterEncoding("utf-8");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}}

=======================================================================

<!--引入poi-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.0.0</version>
</dependency>

​​​​​​​

// 创建一个xlsx
XSSFWorkbook xk = new XSSFWorkbook();
// 创建sheetname第一页页名
XSSFSheet sheet = xk.createSheet("测试");
// 字体样式
XSSFFont xssfFont = xk.createFont();
xssfFont.setBold(true);
xssfFont.setFontName("楷体");
xssfFont.setFontHeight(11);
// 表头样式
XSSFCellStyle headStyle = xk.createCellStyle();
// 继承字体样式
headStyle.setFont(xssfFont);
// 竖向居中,横向居中
headStyle.setVerticalAlignment(VerticalAlignment.CENTER);
headStyle.setAlignment(HorizontalAlignment.CENTER);
// 设置标题一行的单元格的填充颜色为灰色
headStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
headStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headStyle.setWrapText(true); // 设置自动换行
headStyle.setHidden(true); // 高度自动
// 创建第一行标题
XSSFRow row1 = sheet.createRow(0);
// 设置宽度
sheet.setDefaultColumnWidth(30);
// 第一行第一列
XSSFCell Cell1 = row1.createCell(0);
Cell1.setCellValue("姓名");
Cell1.setCellStyle(headStyle);
// 第二列
XSSFCell Cell2 = row1.createCell(1);
Cell2.setCellValue("班级");
Cell2.setCellStyle(headStyle);
// 第三列
XSSFCell Cell3 = row1.createCell(2);
Cell3.setCellValue("年龄");
Cell3.setCellStyle(headStyle);
// 第四列
XSSFCell Cell4 = row1.createCell(3);
Cell4.setCellValue("性别");
Cell4.setCellStyle(headStyle);
// 创建第二行内容
XSSFRow row2 = sheet.createRow(1);
XSSFCell Cell11 = row2.createCell(0);
Cell11.setCellValue("小明");
XSSFCell Cell22 = row2.createCell(1);
Cell22.setCellValue("终极一班");
XSSFCell Cell33 = row2.createCell(2);
Cell33.setCellValue("33");
XSSFCell Cell44 = row2.createCell(3);
Cell44.setCellValue("男");
// 每次创建一行一列都需要调用方法可自己加工成工具类使用时只需要赋值即可
try {// 附件名称和格式response.addHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode("学生信息.xlsx","UTF-8"));response.setContentType("application/vnd.ms-excel");// 转为二进制流进行吐出ServletOutputStream os = response.getOutputStream();xk.write(os);os.flush();os.close();
} catch (Exception e) {log.error("Excel error", e);
}
————————————————
版权声明:本文为CSDN博主「惊呆我了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42683274/article/details/115575144

测试可用

java导出Excel(xls)到客户端(新增一个导出xlsx的方法)相关推荐

  1. php导出excel格式文件,PHP导入与导出Excel文件的方法

    一.PHP导出Excel文件 1,推荐phpexcel,官方网站: http://www.codeplex.com/PHPExcel 导入导出都成,可以导出office2007格式,同时兼容2003 ...

  2. POI 导出excel带小数点的数字格式显示不对解决方法

    POI 导出excel带小数点的数字格式显示不对解决方法 参考文章: (1)POI 导出excel带小数点的数字格式显示不对解决方法 (2)https://www.cnblogs.com/firstd ...

  3. 导出Excel出现“异常来自 HRESULT:0x800A03EC”错误的解决方法(已验证)

    导出Excel出现"异常来自 HRESULT:0x800A03EC"错误的解决方法(已验证) 参考文章: (1)导出Excel出现"异常来自 HRESULT:0x800A ...

  4. 使用NPOI 导出EXCEL,设置样式,字体等详细代码方法教程

    MemoryStream ms = new MemoryStream();XSSFWorkbook workbook = new XSSFWorkbook();//创建Workbook对象for (i ...

  5. java导出excel 客户端_Java poi导出Excel下载到客户端

    Java poi 导出Excel并下载到客户端,具体内容如下 Maven配置,包含了其他文件格式的依赖,就全贴出来了 org.apache.poi poi-excelant 3.12 org.apac ...

  6. java中sproingboot导出模板导出excel,以及设置每一个单元格的方式导出。导出工单,周日历。

    springboot使用poi技术 导出工单和周日历的方式,本人也是查阅很多网址资料才实现成功,本文仅供参考,为自己做一个记录. 第一步引入依赖: <dependency><grou ...

  7. java导出excel数字格式_POI 导出excel带小数点的数字格式显示不对解决方法

    最近看到了一个问题就是java导出excel中带小数点的数字显示不对, 比如我想在excel中第一行显示:  3,000.0 但是在excle中导出的格式总是不带小数点 3000(非文本格式),而且也 ...

  8. poi 导出excel实战与word新增行与excel添加背景色与设置单元格边框

    提示:本文尽可能简洁通俗的讲解[poi 导出excel实战] ,如需导入可见文尾 一.导入依赖: <!--Apache poi--><!--xls(03)--><depe ...

  9. java 读取Excel数据(POI)(一个sheet或者多个sheet)

    1.添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml< ...

最新文章

  1. 嵌入式Linux教程一:安装Ubuntu并进行基本配置、交叉编译环境和Minicom
  2. 零基础学编程学java还是python-小白学编程选java、php、前端还是python
  3. bytes用str转还是用decode
  4. 倾城之恋 “樱“爱而美2020-04-20
  5. 火热的数据中台对企业的价值是什么?
  6. element-UI 弹出组件dialog的遮罩层在弹出层的上面 - 解决篇
  7. 7-3 输出最大公约数 (10 分)
  8. 中国产业数字化发展报告:数智创新,智驱未来
  9. 威斯康星大学乳腺癌肿瘤数据预测分类代码讲解
  10. C# Linq to sql 实现 group by 统计多字段 返回多字段
  11. 实体词典 情感词典_情感词典
  12. 计算机二级ms高级应用考试内容,计算机二级《MSOffice》高级应用考试大纲
  13. ShuffleNet 算法的介绍
  14. 深入理解计算机系统 csapp 家庭作业(第二章完整版)
  15. uni-app 中如何打开外部应用,如:浏览器、淘宝、京东、微博等
  16. windows安装深度linux,最漂亮的国产Linux,windows下安装深度操作系统步骤
  17. python 人民币兑美元汇率代码_Python获取美元人民币实时汇率
  18. 苹果X 顶部和底部留白问题
  19. Python数据可视化的3大步骤,你知道吗?
  20. 中国软件,从繁荣走向文明

热门文章

  1. Ubuntu转换H264,X264,MP4
  2. 万字长文| 最详尽的JAVA后端开发求职路线
  3. 计算机术语英语与门或门,与门、或门、非门、与非门、或非门、异或门
  4. 单片机8位数码管时钟c语言汇编,基于8051单片机和DS12C8878位数码管显示的时钟.docx...
  5. Axure基础:元件库与基础原件
  6. EqualLogic PS6100数据恢复案例;存储硬盘坏道数据恢复方法
  7. Openjudge1388 Lake Counting【DFS/Flood Fill】
  8. idea配置maven3.6.1以及配置阿里云镜像以及配置jdk版本,附maven下载地址百度网盘
  9. 正版软件特惠活动最后几天~~需要赶紧入手!
  10. 白话学习防火墙 2 之IPS和IDS