首页 > 其他分享 >uniapp上传excel文件

uniapp上传excel文件

时间:2023-09-19 22:56:58浏览次数:49  
标签:uniapp excelModel log res excel poi 上传 public 读取

1.前端

使用插件:https://uniapp.dcloud.net.cn/component/uniui/uni-file-picker.html

<uni-file-picker
    v-model="fileName"
    file-extname="xls,xlsx"
    limit="1"
    file-mediatype="all"
    title="请上传Excel文件"
    :list-styles="listStyles"
    @select="upLoadExcelFile"
    >
    <button class="btn"></button>
</uni-file-picker>
const upLoadExcelFile = (e) => {
    uni.uploadFile({
        url: config.BASE_URL + '/platformExcel/upExcelFile?storeId=' + useUserMain.storeId,
        filePath: e.tempFilePaths[0],
        name: 'file',
        success: function (res) {
            console.log(res);
            var jsonObject = JSON.parse(res.data);
            showToastText(jsonObject.data);
        },
        fail: function (e) {
            console.log(e);
            showToastText(e);
        }
    });
};

原生,直接方法调用

// 选择文件
uni.chooseImage({
  count: 1,
  success: function(res) {
    var tempFilePaths = res.tempFilePaths;
    
    // 上传文件
    uni.uploadFile({
      url: 'http://example.com/upload',
      filePath: tempFilePaths[0],
      name: 'file',
      header: {
        'content-type' : 'multipart/form-data'
      },
      formData:{
        'user': 'test'
      },
      success: function(res){
        console.log(res.data);
      },
      fail: function(res){
        console.log(res);
      }
    });
  }
});

 

2.后端

easyExcel:https://easyexcel.opensource.alibaba.com/docs/current/

导入依赖

 <!--excel-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.1.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>poi-ooxml-schemas</artifactId>
                    <groupId>org.apache.poi</groupId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

创建与excel表字段对应的实体

@EqualsAndHashCode(callSuper = false)
@Data
public class ExcelModel {
    @ExcelProperty(value = "姓名")
    String userName;
    @ExcelProperty(value = "性别")
    String sex;
    @ExcelProperty(value = "年龄")
    Integer age;
    @ExcelProperty(value = "电话")
    String phone;
}

创建读取数据监听器

@Slf4j
public class ExcelReadListener implements ReadListener<ExcelModel> {

    List<ExcelModel> list = new ArrayList<>();

    private PlatformClientService platformClientService; // 需要执行插入语句sql的服务// 由于监听器没有被spring托管,无法在spring中注入,所有无法直接使用bean,可以通过构造方法在新建监听器是传入bean
    public ExcelReadListener(PlatformClientService platformClientService) {
        this.platformClientService = platformClientService;
    }

    /**
     * 每读一行触发一次
     */
    @Override
    public void invoke(ExcelModel excelModel, AnalysisContext analysisContext) {
        log.info("读取信息:{}", excelModel);
        if (excelModel.getUserName() != null) { // 防止插入空数据
            list.add(excelModel); // 将读取的信息保存
        }

    }

    /**
     * 全部读取完后触发
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        log.info("-----------读取完毕-----------");
        // 将读取的数据保存到数据库
        for (ExcelModel excelModel : list) {
            log.info("保存信息:{}", excelModel );
        }
        log.info("-----------插入完毕-----------");
    }
}

创建接口

 @ApiOperation("上传excel文件")
    @PostMapping("/upExcelFile")
    public R<String> upExcelFile(@RequestParam("file") MultipartFile file)
        throws IOException {
        // 1.读取文件流
        InputStream is = file.getInputStream();
        // 2.创建一个读取监听器
        ExcelReadListener listener = new ExcelReadListener(platformClientService);

        EasyExcel.read(is, ExcelModel.class, listener).sheet(0)// 读取第几个工作表
            .headRowNumber(1)// 列头占几行
            .doRead();

        return R.ok("文件上传成功!");
    }

 

标签:uniapp,excelModel,log,res,excel,poi,上传,public,读取
From: https://www.cnblogs.com/xinyu-yudian/p/17716067.html

相关文章

  • uniapp项目实践总结(十八)自定义多列瀑布流组件
    导语:有时候展示图片等内容,会遇到图片高度不一致的情况,这时候就不能使用等高双列或多列展示了,这时候会用到瀑布流的页面布局,下面就一起探讨一下瀑布流的实现方法。目录准备工作原理分析实战演练案例展示准备工作在pages/index文件夹下面新建一个waterfall.vue的组件;按......
  • 利用 Excel 对学生的成绩进行分析管理
    利用Excel对学生的成绩进行分析和管理是一种常见且有效的方法。以下是一些步骤和技巧,以帮助您实施这一过程:1.数据输入:将学生成绩数据输入到Excel中的一个工作表中。每个学生可以有一行,每个成绩项目可以有一个列。2.数据整理:确保数据的准确性并进行必要的整理。删除重复数......
  • Typora插入图片上传到图床ImgBB
    注册图床有很多对象存储服务可以作为图床。以imgbb举例(https://imgbb.com/)进入imgbb注册账号并登录。点击关于进入API界面找到并点击“AddAPIkey”复制key。下载和安装PicGo选择PicGo的路径配置PicGo--安装imgbb的插件选择imgbb粘贴APIkey选择配置的图床......
  • 微信小程序转换成uniapp项目
    1.把微信小程序转换成uniapp项目1.1 安装miniprogram-to-uniapp插件打开cmd,运行【npminstallminiprogram-to-uniapp-g】进行安装,因为这个包是工具,要求全局都能使用,所以需要-g进行全局安装。npminstallminiprogram-to-uniapp-g如果运行npm报错,请先安装Node.js,下载地......
  • 如何利用Excel/WPS表格制作智能成绩查询系统?
    要利用Excel或WPS表格制作智能成绩查询系统,可以按照以下步骤进行:1.设计数据库结构:确定需要存储的学生信息和成绩数据,包括姓名、学号、科目、分数等字段。2.创建数据表:在Excel或WPS表格中创建一个新的工作表,将学生信息和成绩数据逐行逐列输入,确保每个字段有明确的标题。3.添......
  • 基于php+webuploader的大文件分片上传,支持断点续传,带进度条
    基于php+webuploader的大文件分片上传,带进度条,支持断点续传(刷新、关闭页面、重新上传、网络中断等情况)。文件上传前先检测该文件是否已上传,如果已上传提示“文件已存在”,如果未上传则直接上传。视频上传时会根据设定的参数(分片大小、分片数量)进行上传,上传过程中会在目标文件夹......
  • php上传断点续传
    Ⅰ求php上传大文件的三种解决方案第一种是使用第三方的存储空间,这种比较方便,也不需要你做什么,直接请求接口就好啦。第二种可以使用ftp方式进行大文件上传,支持断点续传。第三种是用php调用服务端程序来上传,比如调用python等等开发的上传功能ⅡPHP大文件上传,支持断点续传,求具体......
  • vue前端图片上传并显示
    今天完成了vue前端对数据库中图片的显示,并可以对上传的图片添加到数据库中添加修改  数据库信息 ......
  • 【漏洞复现】紫光电子档案管理系统任意文件上传漏洞
    1、简介紫光电子档案管理系统是由紫光软件系统有限公司自主研发的通用档案管理系统,依照国家档案管理标准开发,结合先进的信息化管理理念,采用纯BS结构,使用流行的互联网云计算的技术框架,并且通过UE优化设计,符合用户的使用习惯,是一套具有先进性、安全性、前瞻性的综合档案管理平台。......
  • vue3版的uniapp在路由这块有好的方案吗?
    在Vue3版本的uni-app中,你可以使用VueRouter进行路由管理。VueRouter是Vue.js官方提供的路由解决方案,可以方便地实现单页面应用的路由功能。以下是一些在Vue3版的uni-app中使用VueRouter的好的方案:安装VueRouter:首先,在你的uni-app项目中安装VueRouter。可以使用npm或yarn来安......