Luckyexcel 加载 springboot 后台返回的 excel 文件并显示

👑 博主简介:知名开发工程师
👣 出没地点:北京
💊 2023年目标:成为一个大佬
———————————————————————————————————————————
版权声明:本文为原创文章,如需转载须注明出处,喜欢可收藏!

一. 需求

项目使用 Luckysheet 实现 excel 文件的在线编辑操作,导入导出使用 Luckyexcel 插件来实现,现在的需求是:从后台返回文件流,并通过 Luckyexcel 加载并回显在 Luckysheet 中,实现如下。

二. 效果图

在这里插入图片描述

三. 后端代码

@GetMapping("/downfile")
public ResponseEntity<InputStreamResource> downloadFile() throws IOException {
    File file = new File("/Users/zhoumj/Documents/workspace/idea/mavendemo/lksheet/src/main/resources/static/bbbb.xlsx");
    InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
    return ResponseEntity.ok()
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + file.getName())
            .contentType(MediaType.APPLICATION_OCTET_STREAM)
            .contentLength(file.length())
            .body(resource);
}

四. 前端代码

loadExcel() {
    this.$http
      .get("http://localhost:8080/downfile", {
        responseType: "blob"
      })
      .then((response) => {
        console.log(response);
        // 将获取到的文件对象传递给 uploadExcel 方法
        const file = new File([response.data], "XXX.xlsx", {
          type: response.data.type
        });
        console.log(file);
        var files = [];
        files.push(file);
        this.uploadExcel2(files);
      })
      .catch((error) => {
        console.error("文件获取失败:", error);
      });
}
uploadExcel2(files) {
    LuckyExcel.transformExcelToLucky(
      files[0],
      function (exportJson, luckysheetfile) {
        if (exportJson.sheets == null || exportJson.sheets.length == 0)
          return alert("读取excel文件内容失败, 目前不支持XLS文件!");
        window.luckysheet.destroy();

        window.luckysheet.create({
          data: exportJson.sheets,
          title: exportJson.info.name,
          userInfo: exportJson.info.name.creator,
          container: "luckysheet", // 设定DOM容器的id
          showtoolbar: true, // 是否显示工具栏
          showinfobar: false, // 是否显示顶部信息栏
          showstatisticBar: false, // 是否显示底部计数栏
          sheetBottomConfig: false, // sheet页下方的添加行按钮和回到顶部按钮配置
          allowEdit: false, // 是否允许前台编辑
          enableAddRow: false, // 是否允许增加行
          enableAddCol: false, // 是否允许增加列
          sheetFormulaBar: false, // 是否显示公式栏
          enableAddBackTop: false, // 返回头部按钮
          showsheetbar: false, // 是否显示底部sheet页按钮
          enableAddRow: false, //允许添加行
          // 自定义配置底部sheet页按钮
          showsheetbarConfig: {
            add: false,
            menu: false
          }
        });
      }
    );
}

http://www.niftyadmin.cn/n/5122270.html

相关文章

MySQL进阶(日志)——MySQL的日志 bin log (归档日志) 事务日志redo log(重做日志) undo log(回滚日志)

前言 MySQL最为最流行的开源数据库&#xff0c;其重要性不言而喻&#xff0c;也是大多数程序员接触的第一款数据库&#xff0c;深入认识和理解MySQL也比较重要。 本篇博客阐述MySQL的日志&#xff0c;介绍重要的bin log (归档日志) 、 事务日志redo log(重做日志) 、 undo lo…

JavaScript中的模板直面量

模板直面量 const book {name: 你爱的书籍为};console.log(${book.name});//注意使用来输出name的属性值 我们可以省去function关键字&#xff0c;只用>来表示 let circle r > {const name 3.14;const area name * r * r;return area;}console.log(circle(2)); 还…

如何批量给视频添加logo水印?

如果你想为自己的视频添加图片水印&#xff0c;以增强视频的辨识度和个性化&#xff0c;那么你可以使用固乔剪辑助手软件来实现这一需求。下面就是详细的操作步骤&#xff1a; 1.下载并打开固乔剪辑助手软件&#xff0c;这是一款简单易用的视频剪辑软件&#xff0c;功能丰富&am…

挑战来了!如何应对大商家订单多小商家没有订单的数据倾斜问题?

尊敬的小伙伴们&#xff0c;大家好&#xff01;我是小米&#xff0c;很高兴再次和大家分享一些关于技术的心得和经验。今天的话题是关于数据库表的分表策略&#xff0c;尤其是在处理订单数据时的一些技术挑战&#xff0c;如何处理买家的查询&#xff0c;以及解决大商家订单多小…

cuDNN安装成功

验证方法&#xff1a;winR cmd进入安装目录下&#xff0c;再进入到 extras\demo_suite下&#xff0c;执行.\bandwidthTest.exe和.\deviceQuery.exe&#xff0c;得到下图。

LeetCode——二分查找(Java)

二分查找 简介704.二分查找35. 搜索插入位置34. 在排序数组中查找元素的第一个和最后一个位置 简介 记录一下自己刷题的历程以及代码&#xff0c;会尽量把在本地测试包含main函数的完整代码贴上&#xff0c;以及一些注释掉的输出语句。写题过程中参考了 代码随想录。会附上一些…

Python 框架学习 Django篇 (六) ORM关联

像是上一章我们很少会通过页面点击去添加和绑定关系表&#xff0c;更多的时候都是通过django的语法实现&#xff0c;接下来我们做一个案例 django rom是怎么操作外键关系的 创建mode模型表 Django_demo/mgr/models.py # 国家表 class Country(models.Model):name models.Cha…

基于YOLOv8模型和UA-DETRAC数据集的车辆目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型和UA-DETRAC数据集的车辆目标检测系统可用于日常生活中检测与定位汽车&#xff08;car&#xff09;、公共汽车&#xff08;bus&#xff09;、面包车&#xff08;vans&#xff09;等目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方…