前端可视化展示Excel

Excel可视化

  • 后端返回Excel流前端进行展示

前言

需求:有的时候我们需要接收到后端返回的Excel流,前端进行可视化展示时,这个时候按照如下步骤即可

提前说明:前端展示的Excle样式与格式完全由后端控制,比如合并单元格、样式控制…

前端Demo🌰:例子 (有现成写好的接口)

安装依赖库

  • 安装依赖库(二选一即可)
    • npm install xlsx xlsx-style less less-loader@5.0.0
    • yarn add xlsx xlsx-style less less-loader@5.0.0
  • 拷贝文件夹
  • 引入依赖:在你想请求展示的.vue文件中
import axios from 'axios'
import Spreadsheet from '@/components/x-spreadsheet';
import XStyle from 'xlsx-style';
import Exchange from '@/util/xlsx-exchange';
  • 启动项目:修改报错
    • cpexcel.js (ctrl+p直接搜索文件即可)
(删除)-- var cpt = require('./cpt' + 'able');
(添加)++ var cpt = cptable;

展示

  • 定义template
<div class="content">
  <div id="xss-demo" />
</div>
  • 定义data
data() {
    return {
      sheet: null,
      flobFileSize: 0,
    }
},
  • 初始化xsheet
async mounted() {
  this.instantiateSheet();
},
  • xsheet配置
method: {
  // 设置xsheet 数据
  setXsheetData(out) {
    this.sheet.loadData(out);
    if (out.length) {
      let colLen = Object.keys(out[0].rows[0].cells).length || 10;
      // let colLen = this.getTableColLen(out) || 10;
      let rowLen = Object.keys(out[0].rows).length || 10;
      this.sheet.sheet.data.rows.len = rowLen;
      this.sheet.sheet.data.cols.len = colLen;
      this.sheet.reRender();
    }
  },
  // 实例化 xsheet
  instantiateSheet() {
    let queryListHeight = 0;
    if (this.$refs.queryList)
      queryListHeight = this.$refs.queryList.$el.offsetHeight || 0;
    this.sheet = new Spreadsheet(document.getElementById("xss-demo"), {
      mode: "read", // edit | read
      showToolbar: false,
      showGrid: false,
      showContextmenu: false,
      view: {
        height: () =>
          document.documentElement.clientHeight - 180 - queryListHeight,
        width: () => document.documentElement.clientWidth - 300,
      },
      row: {
        height: 25,
        len: 100,
      },
      col: {
        len: 16,
        width: 100,
        indexWidth: 60,
        minWidth: 60,
      },
    });
  },
}
  • 发送请求
axios({
  url: 'http://39.102.36.212:3006/excelExport',
  method: 'post',
  responseType: 'blob'
}).then((res) => {
  const self = this
  const result = res.data
  this.flobFileSize = result.size || 0;
  if (result instanceof Blob) {
    var reader = new FileReader();
    reader.onload = function (e) {
      let data = e.target.result;
      console.log(data)
      if (data) {
        let workbook = XStyle.read(data, { type: "binary", cellStyles: true });
        let out = Exchange.stox(workbook);
        self.setXsheetData(out)
      } else {
        self.setXsheetData([])
      }
    };
    reader.readAsBinaryString(result);
  } else {
    self.setXsheetData([])
  }
})
  • 展现效果

### 使用 `git` 命令远程仓库拉取代码 为了从远程仓库获取最新的提交记录而不立即合并这些更改到当前分支,可以使用 `fetch` 命令。此方法会将所有的最新提交下载并导入至对应的远程分支中,而不会自动更新工作区中的任何文件[^1]。 对于希望查看已获取的远程分支列表及其状态,可以通过执行如下命令实现: ```bash git branch -av ``` 当开发者确认想要把远端修改集成进来之后,则可以选择手动合并或者变基操作来完成这一过程。例如,在准备接收来自其他贡献者的改动前,先切换回目标分支(通常是主干),再决定采用何种方式同步数据[^5]。 如果需要更简便的操作流程,即一次性完成抓取加合并的动作,那么可以直接利用 `pull` 来代替上述两步动作组合。需要注意的是,默认情况下它等于执行了一次 `fetch` 加上一次基于快速前进策略或是三路合并模式下的 `merge`;而在某些配置下也可能触发 `rebase` 行为[^2]。 #### 示例:通过 Fetch 获取远程更新但不应用 假设有一个名为 origin 的默认上游库连接设置好了,下面是如何仅提取其上的变动作为参考之用的方法: ```bash # 切换到你想比较或后续要融合变更的目标分支 git checkout main # 执行 fetch 动作以获得最新的元数据和对象 git fetch origin # 查看所有分支的状态,包括刚刚被刷新过的远程跟踪分支 git branch -av ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值