一、添加依赖
org.apache.poi
poi-ooxml
${poi.version}
二、导出数据实体类字段加注解
package com.ruoyi.system.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 对象 sys_product
*
* @date 2021-12-29
*/
public class SysProduct extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private String id;
/** 名称 */
@Excel(name = "名称")
private String productname;
/** 规格 */
@Excel(name = "规格")
private String specifications;
/** 原价 */
@Excel(name = "原价")
private Long originalprice;
/** 现价 */
@Excel(name = "现价")
private Long price;
/** 库存 */
@Excel(name = "库存")
private String stock;
/** 创建日期 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createtime;
/** 更新日期 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date updatetime;
/** 生产日期 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date dateofmanufacture;
/** 保质期 */
@Excel(name = "保质期")
private String qualityguaranteeperiod;
/** 图片路径 */
@Excel(name = "图片路径")
private String imageurl;
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public void setProductname(String productname)
{
this.productname = productname;
}
public String getProductname()
{
return productname;
}
public void setSpecifications(String specifications)
{
this.specifications = specifications;
}
public String getSpecifications()
{
return specifications;
}
public void setOriginalprice(Long originalprice)
{
this.originalprice = originalprice;
}
public Long getOriginalprice()
{
return originalprice;
}
public void setPrice(Long price)
{
this.price = price;
}
public Long getPrice()
{
return price;
}
public void setStock(String stock)
{
this.stock = stock;
}
public String getStock()
{
return stock;
}
public void setDateofmanufacture(Date dateofmanufacture)
{
this.dateofmanufacture = dateofmanufacture;
}
public Date getDateofmanufacture()
{
return dateofmanufacture;
}
public void setQualityguaranteeperiod(String qualityguaranteeperiod)
{
this.qualityguaranteeperiod = qualityguaranteeperiod;
}
public String getQualityguaranteeperiod()
{
return qualityguaranteeperiod;
}
public void setImageurl(String imageurl)
{
this.imageurl = imageurl;
}
public String getImageurl()
{
return imageurl;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("productname", getProductname())
.append("specifications", getSpecifications())
.append("originalprice", getOriginalprice())
.append("price", getPrice())
.append("stock", getStock())
.append("dateofmanufacture", getDateofmanufacture())
.append("qualityguaranteeperiod", getQualityguaranteeperiod())
.append("imageurl", getImageurl())
.append("createtime", getCreatetime())
.append("updatetime", getUpdatetime())
.toString();
}
}
三、添加工具类 ExcelUtil.java
package com.ruoyi.common.utils.poi;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPicture;
import org.apache.poi.hssf.usermodel.HSSFPictureData;
import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.PictureData;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFShape;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.annotation.Excel.Type;
import com.ruoyi.common.annotation.Excels;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.UtilException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileTypeUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.file.ImageUtils;
import com.ruoyi.common.utils.reflect.ReflectUtils;
/**
* Excel相关处理
*
*/
public class ExcelUtil
{
private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
/**
* Excel sheet最大行数,默认65536
*/
public static final int sheetSize = 65536;
/**
* 工作表名称
*/
private String sheetName;
/**
* 导出类型(EXPORT:导出数据;IMPORT:导入模板)
*/
private Type type;
/**
* 工作薄对象
*/
private Workbook wb;
/**
* 工作表对象
*/
private Sheet sheet;
/**
* 样式列表
*/
private Map styles;
/**
* 导入导出数据列表
*/
private List list;
/**
* 注解列表
*/
private List
四、撸代码
1、controller层
/**
* 导出商品列表
*/
@RequiresPermissions("system:product:export")
@Log(title = "列表导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(SysProduct sysProduct)
{
List list = sysProductService.selectSysProductList(sysProduct);
ExcelUtil util = new ExcelUtil(SysProduct.class);
return util.exportExcel(list, "商品列表数据");
}
2、service层
@Override
public List selectSysProductList(SysProduct sysProduct)
{
return sysProductMapper.selectSysProductList(sysProduct);
}
3、Mapper层
public List selectSysProductList(SysProduct sysProduct);
4、SQL
select id, productname, specifications, originalprice, price, stock, dateofmanufacture, qualityguaranteeperiod, imageurl, createtime, updatetime from sys_product
五,页面处理
六,看效果

学习来自于:RuoYi: 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用