excel合并单元格导出

excel合并单元格导出

  data() {
    return {
      content: "",
      //要导出的数组,格式为每行一个数组。
      jsono: [
        ["待观察者", "@merges", "明日之星", "@merges", "超级明星", "@merges"],
        ["张三", "李四", "王五王", "赵六", "李四1", "李四2"],
        ["", "", "", "", "李四3", "李四4"],
        ["", "", "", "", "李四5", "李四6"],
        ["绩效不佳", "@merges", "中坚力量", "@merges", "表现出色", "@merges"],
        ["李四4", "李四5", "李四7", "李四8", "测试1", "测试2"],
        ["李四6", "", "李四9", "", "测试3", ""],
        ["未胜任者", "@merges", "表现尚可", "@merges", "稳定贡献者", "@merges"],
        ["小七", "管理员", "小林", "小吴", "小周", "小赵"],
        ["培训员", "", "小徐", "", "小张", ""],
      ],
    };
  },
  methods:{
      downloadExl(data) {
      let zElin = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"];
      let saveJson = {
        "!ref": `A1:${zElin[5]}${data.length}`,
        "!merges": [],
      };
      data.forEach((tr, x) => {
        tr.forEach((item, i) => {
          let key = zElin[i] + (x + 1);
          if (item == "@merges") {
            saveJson["!merges"].push({
              s: {
                c: i - 1,
                r: x,
              },
              e: {
                c: i,
                r: x,
              },
            });
          }
          saveJson[key] = {
            t: "s",
            v: item,
          };
        });
      });

      const wb = {
        SheetNames: ["Sheet1"],
        Sheets: {},
        Props: {},
      };
      const wopts = {
        bookType: "xlsx",
        bookSST: true,
        type: "binary",
        cellStyles: true,
      };
      //这里的数据是用来定义导出的数据类型
      wb.Sheets["Sheet1"] = saveJson;
      let buf = this.s2ab(XLSX.write(wb, wopts));
      this.$nextTick(() => {
        this.saveAs(
          new Blob([buf], {
            type: "application/octet-stream",
          }),
          "人才九宫格" +
            "." +
            (wopts.bookType == "biff2" ? "xls" : wopts.bookType)
        );
      });
    },
     s2ab(s) {
      if (typeof ArrayBuffer !== "undefined") {
        let buf = new ArrayBuffer(s.length);
        let view = new Uint8Array(buf);
        for (let i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
        return buf;
      } else {
        let buf = new Array(s.length);
        for (let i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff;
        return buf;
      }
    },
        saveAs(obj, fileName) {
      //创建a标签模拟下载
      let tmpa = document.createElement("a");
      tmpa.download = fileName || "下载";
      tmpa.href = URL.createObjectURL(obj);
      tmpa.click();
      setTimeout(() => {
        URL.revokeObjectURL(obj);
      }, 100);
    },
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Excel合并单元格导入导出,可以使用Apache POI库和EasyPoi库。 首先,在项目的pom.xml文件中引入Apache POI库的依赖。可以使用以下代码: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependency> ``` 然后,导入要使用的接口代码。在Excel导入的控制器方法中,使用MultipartFile参数接收上传的Excel文件,并调用MyExcelUtils工具类的importExcel方法将Excel数据转换成指定的实体类列表。具体的代码如下: ```java @PostMapping(value = "/importTest") public void importTest(@RequestParam("file") MultipartFile file) { List<ProjectGroupExcelVO> projectGroupExcelVOList = MyExcelUtils.importExcel(file, 1, 2, ProjectGroupExcelVO.class); System.out.println(projectGroupExcelVOList.toString()); System.out.println("-----------------------------------"); System.out.println("写入数据库"); } ``` 其中,ProjectGroupExcelVO类使用了EasyPoi库的注解来定义Excel的列名、单元格样式等信息。具体的代码如下: ```java import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.annotation.ExcelCollection; import lombok.Data; import java.util.List; @Data public class ProjectGroupExcelVO { @Excel(name = "小组名称", needMerge = true, width = 20, height = 8) private String groupName; @Excel(name = "小组口号", needMerge = true, width = 20, height = 8) private String groupSlogan; @Excel(name = "小组类型", needMerge = true, width = 20, height = 8) private String groupType; @ExcelCollection(name = "组员信息") private List<GroupUserExcelVO> groupUsers; } ``` 这样就可以实现Excel合并单元格导入导出了。使用EasyPoi库的注解可以方便地定义Excel的样式和结构,而Apache POI库提供了操作Excel的功能。具体的导出Excel的方法可以根据需求进行编写。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值