当前位置: 首页 > wzjs >正文

建筑工程总公司成都关键词优化服务

建筑工程总公司,成都关键词优化服务,云服务器做网站新手教程,在线代理入口easyExcel 入门,完成web的excel文件创建和导出 easyExcel官网 EasyExcel 的主要特点如下: 1、高性能:EasyExcel 采用了异步导入导出的方式,并且底层使用 NIO 技术实现,使得其在导入导出大数据量时的性能非常高效。 2、易于使…

easyExcel 入门,完成web的excel文件创建和导出

easyExcel官网
在这里插入图片描述

EasyExcel 的主要特点如下:

1、高性能:EasyExcel 采用了异步导入导出的方式,并且底层使用 NIO 技术实现,使得其在导入导出大数据量时的性能非常高效。

2、易于使用:EasyExcel 提供了简单易用的 API,用户可以通过少量的代码即可实现复杂的 Excel 导入导出操作。

3、增强的功能“EasyExcel 支持多种格式的 Excel 文件导入导出,同时还提供了诸如合并单元格、数据校验、自定义样式等增强的功能。

4、可扩展性好:EasyExcel 具有良好的扩展性,用户可以通过自定义 Converter 对自定义类型进行转换,或者通过继承 EasyExcelListener 来自定义监听器实现更加灵活的需求。

入门使用

使用maven导入easyExcel坐标

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version>
</dependency>

定义实体类封装数据,一行对应一个对象 用@ExcelProperty注解完成与excel的映射

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CategoryExcelVo {// `value` 指定 Excel 表头名称,数据导入导出时匹配该表头// `index`(可选)从 0 开始,表示 Excel 第 n+1 列// 如果省略 `index`,则按字段声明顺序匹配列@ExcelProperty(value = "id" ,index = 0)private Long id;@ExcelProperty(value = "名称" ,index = 1)private String name;
}

excel对应的表
在这里插入图片描述

读入操作 read 读需要用到ExcelListener对象

1、 先创建这个对象

@Getter
public class ExcelListener<T> extends AnalysisEventListener<T> {/*** 每读取一行就执行一次* @param t    返回的数据* @param analysisContext*///读取后对象存储在data集合中List<T> data=new ArrayList<>();@Overridepublic void invoke(T t, AnalysisContext analysisContext) {data.add(t);}/***  都读取解析完毕后执行,   一般用于对资源的处理, 或对操作的补充* @param analysisContext*/@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("表格的解析完成了");}

2、 进行读测试

private static void readFile() {// 文件的路径String filePath="/Users/chen/01.xlsx";// easyExcel不能由spring 接管, 这里手动new对象ExcelListener<CategoryExcelVo> excelVoExcelListener = new ExcelListener<>();//读操作EasyExcel.read(filePath, CategoryExcelVo.class,excelVoExcelListener).sheet().doRead();//读取完毕后数据存放到了, 监听器的data里面,遍历取出来就可以List<CategoryExcelVo> data = excelVoExcelListener.getData();for (CategoryExcelVo item : data) {System.out.println(item);}}
写出操作 write 不需要用到ExcelListener对象
    private static void writeFile() {//要写到的磁盘路径String filePath="/Users/chen/categoryWrite.xlsx";//创建每一个对象,对应一行数据List<CategoryExcelVo> list = new ArrayList<>() ;list.add(new CategoryExcelVo(1L , "数码办公")) ;list.add(new CategoryExcelVo(11L , "华为手机")) ;//参数    1路径名    2 对应的类     3 excel中sheet的名字       4 集合EasyExcel.write(filePath,CategoryExcelVo.class).sheet("category").doWrite(list);System.out.println("finished write");}

在web中使用

后端

1、controller

@RestController
@RequestMapping("/admin/product/category")
public class CategoryController {@Autowiredprivate CategoryService categoryService;@GetMapping("/excelExport")//不需要返回值, 由response设置public void excelExport(HttpServletResponse response){categoryService.excelExport(response);}
}

2、service

@Service
@Transactional
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;/***  导出 excel文件,写操作* @param response*/@Overridepublic void excelExport(HttpServletResponse response) {try {// 设置mime类型response.setContentType("application/vnd.ms-excel");//设置浏览器编码方法response.setCharacterEncoding("utf-8");//对路径进行编码String fileName = URLEncoder.encode("分类数据", "UTF-8");//设置 HTTP 响应头,告诉浏览器该请求是一个文件下载(attachment),并指定下载的文件名为 fileName.xlsx。response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");//准备数据//查询全部分类,不需要带树形结构List<Category>  categoryList=categoryMapper.selectAllCategory();//查出来的数据比实际用到的数据多//   查询出来的类和对应的vo类不匹配, 但是有部分属性相同,这时候可以用map()函数List<CategoryExcelVo> categoryExcelVoList = categoryList.stream().map(category -> {CategoryExcelVo categoryExcelVo = new CategoryExcelVo();//   BeanUtils.copyProperties();   可以把参数一的属性的值,拷贝到参数2中,    要求两个属性必须一致BeanUtils.copyProperties(category, categoryExcelVo);return categoryExcelVo;}).collect(Collectors.toList());//写出数据EasyExcel.write(response.getOutputStream(), CategoryExcelVo.class).sheet("category").doWrite(categoryExcelVoList);} catch (Exception e) {e.printStackTrace();}}
}

3、mapper

@Mapper
public interface CategoryMapper {//查询所有分类List<Category> selectAllCategory();}
    <select id="selectAllCategory" resultType="com.chen.model.entity.product.Category">select <include refid="columns"/> from categorywhere  is_deleted=0order by  order_num</select>

前端

1、 api

import request from '@/utils/request'
// 抽取出来方便后面使用
const apiUrl = '/admin/product/category'/*** 导出excel文件* @returns {AxiosPromise}*/
export const exportExcel = () => {return request({url: `${apiUrl}/excelExport`,method: 'get',responseType:'blob' //用于处理二进制数据})
}

2、 vue

<template><div class="tools-div"><el-button type="success" size="small"  @click="exportExcelFile">导出</el-button><el-button type="primary" size="small">导入</el-button></div>
</template>
```js 
<script setup>
import {exportExcel} from '@/api/category'
//点击导出后,开始执行方法 本方法是给按钮绑定的
const exportExcelFile = async () => {// exportExcel() 是一个异步函数,返回一个 Promise。//.then((resp => { })) 监听 Promise 的成功状态,但回调函数中没有任何操作。exportExcel().then((resp => {//创建blob对象let blob = new Blob([resp]);//创建a标签const link = document.createElement("a");//赋值数据link.href=window.URL.createObjectURL(blob);//设置名称link.download="分类数据.xlsx"//模拟点击link.click()}))
}
</script>
http://www.dtcms.com/wzjs/349668.html

相关文章:

  • 论述网站开发建设的一般流程最近热点新闻事件2023
  • 那个做动态表情包的网站百度搜索如何去广告
  • 怎么打开文件做的网站网页设计制作网站html代码大全
  • wordpress牛站网络销售的好处和意义
  • 做b2b网站卖什么好视频外链平台
  • 做字幕网站有哪些怎么让百度收录我的网站
  • 中国有几家网络公司利于seo的建站系统有哪些
  • wordpress个人展示网站6企业网站设计与推广
  • 怎么查有做网站的公司有哪些网络营销成功案例有哪些2022
  • 祁东网站开发google play官网下载
  • 淮南建设公司网站网络营销中的seo是指
  • 域名注册网站的域名哪里来的网络热词2022
  • 网站建设公司需要申请icp吗武汉seo结算
  • 沈阳网势科技有限公司广西百度seo
  • 南京怎么做网站可以发广告的100个网站
  • 做爰片的网站百度人工客服电话是多少
  • 做水果的b2b网站今日热点新闻头条国内
  • 做金融资讯网站需要哪些牌照bt磁力搜索
  • 网站对一个关键词做排名怎么做it培训机构排名
  • 做词做曲网站东莞百度seo新网站快速排名
  • 专业网站开发哪家好百度竞价价格
  • 建设网站平台需要什么硬件配置大数据营销软件
  • 织梦系统 子网站百度广告投放平台叫什么
  • 网站虚拟主机查询2023年九月份新闻
  • 网站买流量是怎么做的企业高管培训课程有哪些
  • 做网站购买服务器吗在线培训平台哪家好
  • 类似b站的网站怎么做企业培训课程体系
  • 服装商城网站建设2022最新免费的推广引流软件
  • 网站备案服务内容个人网页设计
  • 如何查找高权重网站新闻软文范例大全