flask 网站开发,做国外直播网站有哪些,做网站平方根怎么表示,做食品的采购员常用网站环境介绍 技术栈 springbootmybatis-plusmysqleasyexcel 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。
他能让你在不用考虑性…环境介绍 技术栈 springbootmybatis-plusmysqleasyexcel 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。
他能让你在不用考虑性能、内存的等因素的情况下快速完成Excel的读、写等功能。
官网https://easyexcel.opensource.alibaba.com/ 加入依赖
dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion3.3.2/version
/dependency编写实体类
TableName(value product) Data NoArgsConstructor AllArgsConstructor public class Product implements Serializable { /** * 序号_自动生成 */ TableId(type IdType.AUTO) ExcelProperty(序号) private Integer number; /** * 创建时间 */ ExcelProperty(创建时间) private Date createtime; /** * 产品名称 */ ExcelProperty(产品名称) private String productname; /** * 产品编号 */ ExcelProperty(产品编号) private String productnumber; /** * 产品型号 */ ExcelProperty(产品型号) private String manufacturer; /** * 产品位置 */ ExcelProperty(产品位置) private String producepath; /** * 图片位置 */ ExcelProperty(图片位置) private String imagepath; /** * 使用单位 */ ExcelProperty(使用单位) private String unit; /** * 金额 */ ExcelProperty(金额) private Integer money; /** * 入库时间 */ ExcelProperty(入库时间) private Date intime; /** * 出库时间 */ ExcelProperty(出库时间) private Date puttime; /** * 操作人 */ ExcelProperty(操作人) private String operator; /** * 创建人 */ ExcelProperty(创建人) private String createduser; /** * 备注 */ ExcelProperty(备注) private String notes; /** * 产品数量 */ ExcelProperty(产品数量) private Integer producedigit; /** * 产品单位 */ ExcelProperty(产品单位) private String productunit; TableField(exist false) private static final long serialVersionUID 1L; } 自定义监听器 public class MyListener implements ReadListenerProduct {// private ArrayListProduct list new ArrayList();private ProductService productService;int sum0;public MyListener(ProductService testMapper) {this.productService productService;}//每读一行则调用该方法Overridepublic void invoke(Product product, AnalysisContext analysisContext) {sum;//数据库新增// productService.save(product);}//每读完整个excel则调用该方法Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println(读取了sum行数据);}
} web中的读(上传) 后端
//上传//上传PostMapping(/upload)ResponseBodypublic String upload(MultipartFile file) throws IOException {long start System.currentTimeMillis();EasyExcel.read(file.getInputStream(), Product.class, new MyListener(productService)).sheet().doRead();long end System.currentTimeMillis();System.out.println(耗时:(end-start)/1000秒);return success;} 前端(vue2Element)
el-uploadclassupload-demoactionhttp://192.168.1.8:8007/excel/upload:on-previewhandlePreview:on-removehandleRemove:before-removebeforeRemovemultiple:limit3:on-exceedhandleExceed:file-listfileListel-button sizesmall typeprimary点击上传/el-button
/el-upload效果 web中的写(下载) 后端 GetMapping(download)
public void download(HttpServletResponse response) throws IOException {// 这里注意 有同学反应使用swagger 会导致各种问题请直接用浏览器或者用postmanresponse.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet);response.setCharacterEncoding(utf-8);// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName URLEncoder.encode(测试, UTF-8).replaceAll(\\, %20);response.setHeader(Content-disposition, attachment;filename*utf-8 fileName .xlsx);EasyExcel.write(response.getOutputStream(), Product.class).sheet(模板).doWrite(productService.list());
}前端
button clickdownload导出Excel/buttonmethods:{download(){document.location.hrefhttp://192.168.1.8:8007/excel/download;}}, 效果