首先创建 实体类:

package cn.temptation.domain;import java.util.Date;import com.fasterxml.jackson.annotation.JsonFormat;public class Product {private Integer id;private String name;private String unit;private Double price;private Double stock;private String remark;@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")private Date purchaseDate;private Integer isDelete;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name == null ? null : name.trim();}public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit == null ? null : unit.trim();}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark == null ? null : remark.trim();}public Date getPurchaseDate() {return purchaseDate;}public void setPurchaseDate(Date purchaseDate) {this.purchaseDate = purchaseDate;}public Double getStock() {return stock;}public void setStock(Double stock) {this.stock = stock;}public Integer getIsDelete() {return isDelete;}public void setIsDelete(Integer isDelete) {this.isDelete = isDelete;}@Overridepublic String toString() {return "Product [id=" + id + ", name=" + name + ", unit=" + unit+ ", price=" + price + ", stock=" + stock + ", remark="+ remark + ", purchaseDate=" + purchaseDate + ", isDelete="+ isDelete + "]";}}

然后写Controller:

  @RequestMapping("/wb.do")public  String exportExcel(HttpServletResponse response) throws Exception {String[] headers=new String[]{"id编号","名称","单位","单价","库存量","采购日期","备注信息"};String sheetName="新的excel表格";String excelProductName="新的excel表格.xls";//第一步:从数据库获取数据List<Product> list=userDao.selectAll();//第二步:将获取的数据经过整理形成新map数据List<Map<Integer, Object>> datalist=ExcelBeanUtil.manageProductList(list);//第三步:创建一个表格Workbook workbook=new HSSFWorkbook(); //第四步:向Excel表格插入数据SS_Workbook.fillExcelSheetData(sheetName, headers, datalist,workbook);//第五步:下载此excel表格WebUtil.downloadExcel(response, workbook, excelProductName);return excelProductName;}

按照上面的注释;步骤共分为五步。

第一步的dao层和mapper层:

 List<Product> selectAll();
  <select id="selectAll" resultType="cn.temptation.domain.Product">SELECT id,name,unit,price,stock,purchase_date,remark FROM product </select>

第二步的  List<Product>  转换为 List<Map<Integer, Object>>

 public static List<Map<Integer, Object>> manageProductList(List<Product> list){List<Map<Integer, Object>> dataList=new ArrayList<>();if (list!=null && list.size()>0) {int length=list.size();Map<Integer, Object> dataMap;Product bean;for (int i = 0; i < length; i++) {bean=list.get(i);//String[] headers=new String[]{"id编号","名称","单位","单价","库存量","采购日期","备注信息"};dataMap=new HashMap<>();dataMap.put(0, bean.getId());dataMap.put(1, bean.getName());dataMap.put(2, bean.getUnit());dataMap.put(3, bean.getPrice());dataMap.put(4, bean.getStock());dataMap.put(5, bean.getPurchaseDate());dataMap.put(6, bean.getRemark());dataList.add(dataMap);}}return dataList;}

第三步创建表格,这个按照上面的new一个就行。

第四步:向新建的表格中插入数据。

public class SS_Workbook {private static final Logger log=LoggerFactory.getLogger(SS_Workbook.class);private static final String dateFormat="yyyy-MM-dd";private static final SimpleDateFormat simpleDateFormat=new SimpleDateFormat(dateFormat);public static void fillExcelSheetData(String sheetName,String[] headers,List<Map<Integer, Object>> dataList,Workbook workbook){// 第一步,在workbook中添加一个sheet,对应Excel文件中的sheetSheet sheet=workbook.createSheet(sheetName);// 第二步  创建excel表格的第一行Row  headerRow=sheet.createRow(0);//第三步 ,Cell表示EXCEL的一个小方框, //headerRow.createCell(i),表示第几个小方框,//headerRow.createCell(i).setCellValue(title[i]); 表示按照顺序放入excel的首行当中 for(int i=0;i<headers.length;i++){          headerRow.createCell(i).setCellValue(headers[i]);}//[{0=1, 1=联想笔记本, 2=台, 3=4500.0, 4=120.0, 5=null, 6=好},//  {0=2, 1=IBM服务器2018, 2=个, 3=1400.0, 4=120.0, 5=null, 6=不错22}]//第四步,从第二行开始塞入真正的数据列表int rowIndex=1;Row row;Object obj;for(Map<Integer, Object> rowMap:dataList){try {row=sheet.createRow(rowIndex++); //从第二行开始新建,循环次数为dataList(Excel行数,竖直方向)的长度,for(int i=0;i<headers.length;i++){  //headers.length 表示循环次数为headers(Excel列数,横轴方向)的长度obj=rowMap.get(i);              //rowMap 是要填在Excel横轴上,此处的i表示横轴长度,每次取一个数据,if (obj==null) {row.createCell(i).setCellValue("");                         //此处 不插数据}else if (obj instanceof Date) {String tempDate=simpleDateFormat.format((Date)obj);row.createCell(i).setCellValue((tempDate==null)?"":tempDate);//此处 插入时间数据 }else {System.out.println("进入了else");row.createCell(i).setCellValue(String.valueOf(obj));        //此处 插入obj数据 }}} catch (Exception e) {log.debug("excel sheet填充数据 发生异常: ",e.fillInStackTrace());}}}}

第五步:下载此表格。

public static void downloadExcel(HttpServletResponse response,Workbook workbook,String fileName) throws Exception{response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso-8859-1"));response.setContentType("application/ynd.ms-excel;charset=UTF-8");OutputStream out=response.getOutputStream();workbook.write(out);out.flush();out.close();}

这样就成功了,然后再浏览器中输入此Controller的地址,浏览器就会下载一个Excel表格。表格如下所示:

java的poi导出Excel文件相关推荐

  1. poi导出excel 损坏_急!!!java用poi导出excel文件,打开导出的文件时报错“文件错误,数据可能丢失”...

    展开全部 两个原因: 1.你的excel模版本身有问题,可以尝试新建一个模版. 2.你的excel使用了一e68a8462616964757a686964616f31333365643662些POI不 ...

  2. POI导出Excel文件时,单元格内文字竖排、横排默认不展示,必须点击一下问题解决

    //创建单元格样式设置CellStyle cs_vertical = wb.createCellStyle();//设置字体Font textFont = wb.createFont();textFo ...

  3. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

  4. Java:使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开

    使用POI导出Excel文件后打开文件提示因为文件格式或文件扩展名无效而无法打开 问题 方案 问题 在SpringBoot项目中,使用POI导出查询结果至Excel文件中,成功导出后打开Excel文件 ...

  5. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  6. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  7. java利用poi导出excel功能-附带图片导出

    java利用poi导出excel功能-附带图片导出 写在前面 最近刚离职,闲来无事,于是把上两家公司都有碰到过的需求但都没有去研究实现:即导出带图片的excel报表.于是就折腾了一下这个功能,研究出来 ...

  8. Java操作poi导出Excel自定义字体颜色

    Java操作poi导出Excel自定义字体颜色 功能介绍 POI操作Excel 第一步创建一个导出的工具类 整体定义表格字体样式 自定义表格字体样式 总结 功能介绍 Apache POI 是用Java ...

  9. java使用poi生成Excel文件并合并单元格

    java使用poi生成Excel文件并合并单元格        业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...

最新文章

  1. python安装教程3.8.5-Python 3.8.5下载
  2. Flutter:实现红包晃动效果
  3. docker学习笔记(一)docker入门
  4. AVFoundation – AVAssetImageGenerator 截图
  5. 基于微服务架构的门户平台改造的研究
  6. 笔记 3 文件的特殊属性,权限
  7. 计算机如何安装pdf,pdf虚拟打印机是什么?怎么安装到电脑里
  8. IoT物联网天线有哪些?
  9. turbo码书籍推荐
  10. 阿里云操作系统——飞天(Apsara)
  11. SEO入门一篇就够-SEO教程
  12. 计算机网络实验 IP网络规划与路由设计
  13. 某医院门诊预约系统/医院预约挂号系统
  14. 教师备课计算机教师管理制度,计算机学院教学过程管理中教师职责与问责暂行规定--中地大计字[2016]03号...
  15. STM32F4-usb_slave u盘
  16. 帆软使用技巧之使用填报报表
  17. pc机串口通讯实验c语言,单片机实验六 单片机与PC机串口通讯
  18. 读书笔记-人际关系与权力相互作用
  19. UnityShader_屏幕后处理之辉光
  20. ARM开发板移植lsusb命令

热门文章

  1. SparkContext转化为JavaSparkContext
  2. 自由还是霸权? TPP将撤销政府的数据主权
  3. javascript 原生得到document.Element的方法
  4. Oracle over函数学习
  5. PHP中问号?和冒号: 的作用
  6. HDU 4879 ZCC loves march (并查集,set,map)
  7. 正则实现二代身份证号码验证详解
  8. 《深入理解Android 卷III》第四章 深入理解WindowManagerService
  9. tyvj1102 单词的划分
  10. Oracle 自己主动诊断资料档案库 (ADR)、自己主动诊断工作流、ADRCI工具