首页 > 其他分享 >Excel打印封装

Excel打印封装

时间:2023-06-01 14:33:07浏览次数:36  
标签:封装 apis margin 打印 Excel query workbook import data

准备部分

1、安装依赖 npm install vue-print-nb --save 

2、main.js全局安装 
import Print from 'vue-print-nb'
Vue.use(Print);

组件部分 /components/ExcelForm.vue

<template>
  <div>
    <div class="btn">
      <el-button size="mini" type="primary" v-print="'#preview-table'"
        >打 印</el-button
      >
      <el-button size="mini" type="primary" @click="handleClose"
        >返 回</el-button
      >
    </div>
    <div v-html="tableau" class="tableau" id="preview-table"></div>
  </div>
</template>

<script>
import xlsx from 'xlsx'

export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},
  data() {
    return {
      tableau: null
    }
  },
  props: ['fileData'],
  computed: {},
  watch: {
    fileData(blob) {
      let data = new Uint8Array(blob) //
      let workbook = xlsx.read(data, { type: 'array' })
      let sheetNames = workbook.SheetNames // 工作表名称集合
      this.workbook = workbook
      this.cardActive = sheetNames[0]
      var worksheet = this.workbook.Sheets[sheetNames[0]]
      this.tableau = xlsx.utils.sheet_to_html(worksheet)
    }
  },
  methods: {
    handleClose() {
      window.location.href = 'about:blank'
      window.close()
    }
  },
  created() {},
  mounted() {},
  activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
}
</script>
<style lang="scss" scoped>
.btn {
  margin-left: 80%;
  margin-top: 30px;
}
.tableau {
  height: 100%;
  overflow: auto;
  margin-top: 30px;

  /deep/ table {
    width: 80%;

    border-collapse: collapse;
    table-layout: fixed;
    margin: 0px auto;
    tr {
      td {
        background: #ffffff;
        text-align: center;
        padding: 15px 0;
        border: 1px solid #e8e8e8;
        vertical-align: middle;
      }
    }
  }
}
</style>

页面部分 /preview.vue

<template>
  <div>
    <ExcelForm :fileData="fileData"></ExcelForm>
  </div>
</template>
<script>
import ExcelForm from '@/components/ExcelForm'
// import apis from '@/apis'
import axios from 'axios'
export default {
  components: { ExcelForm },
  data() {
    return {
      fileData: null
    }
  },
  props: {},
  methods: {
    getExcelData() {
      let apis = this.$route.query.apis
      delete this.$route.query.apis
      axios({
        method: 'post',
        responseType: 'arraybuffer', // 预览arraybuffer,下载:blob
        url: apis,
        data: {
          ...this.$route.query
        }
      })
        .then(res => {
          this.fileData = res.data
        })
        .catch(error => {
          this.$message.error(error, '预览失败')
        })
    }
  },
  mounted() {
    this.getExcelData()
  }
}
</script>

<style lang="scss" scoped>
.searchBar {
  padding: 0 24px;
}
.content-page {
  margin-top: 20px;
  text-align: right;
}
/deep/ .el-dialog__body {
  padding: 10px 20px;
}
</style>

使用部分

methods: {
    //打印
    printing() {
      const { href } = this.$router.resolve({
        name: 'preview',
        query: {
          apis: apis._api_signAduit_export,
          unitId: this.unitId,
          matchId: this.matchId
        }
      })
      window.open(href, '_blank')
    }
}

标签:封装,apis,margin,打印,Excel,query,workbook,import,data
From: https://www.cnblogs.com/yx-liu/p/17448893.html

相关文章

  • 上万条美容知识大全ACCESS\EXCEL数据库
    今天采集了一个美容知识大全的网站,网站里的内容主要是美容化妆类的文章,分类有近百个,是个可以受女生喜欢的内容。截图包含所有字段。分类统计情况为:瘦腿方法(793)、美白(615)、瘦腰(583)、上班族(472)、抗衰老(453)、男士美容(421)、瘦脸(355)、翘臀(345)、防晒(256)、瘦臂(244)、补水(241)、保湿(229)、......
  • pytest-mock mock的高层封装
    pytest-mockpytest-mock是一个pytest的插件,安装即可使用。它提供了一个名为mocker的fixture,仅在当前测试function或method生效,而不用自行包装。objectmock一个object,是最常见的需求。由于function也是一个object,以下以function举例。importosdefrm(filename):os.remove......
  • 30万个名字汉字起名中文取名ACCESS\EXCEL数据库
    虽然汉字#起名名字#的数据库已经有一些,比如7千多汉字起名参考大典ACCESS数据库、汉字起名中文起名宝宝起名ACCESS数据库,但是今天发现了一个数据库,他是在《7千多汉字起名参考大典》的基础上增加了30万个男孩女孩的名字实例。非常适合于比如固定了名字的第二个字,取第三个字时一查就......
  • 菜鸟云打印
    安装菜鸟打印组件https://support-cnkuaidi.taobao.com/doc.htm#?docId=108934&docType=1Html:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="JS_CloudPrint.aspx.cs"Inherits="Demo.JS_CloudPrint"%><!......
  • 规则引擎的低代码日记——自定义函数编程操作(类excel函数)
    它是技术源码可开放的JAVA规则引擎,采用springcloud+VUE的技术架构进行构建,其中对数据的灵活加工处理采用的是函数式编程的思路(类excel函数配置),是其亮点功能。它允许开发人员定义和管理应用程序的规则,并在应用程序中执行这些规则。在规则引擎中,从数据加工成变量并使用函数式编程......
  • 3万5千英语句子英语例句大全ACCESS\EXCEL数据库
    在学习英语的过程中可能会发现没有比较适合自己的英语学习软件,适合你的软件不一定适合我,竟毕每个人的学习方法不尽相同。这个数据库收集了40多个课程,35000多个句子。是学习英语的必备资料。分类表:包含电话英语、旅游英语、求职英语、商务英语、社交英语、洋话连篇、走遍美国、灵......
  • 2万多汉字组词词组大全ACCESS\EXCEL数据库
    本数据库是由MicrosoftAccess2000创建的MDB数据库文件,您需要使用MicrosoftAccess2000或以上版本打开这个文件。可以通过到Access中全选复制,然后到Excel中粘贴立即转为XLS文件,也可以在Access中导出成其他格式文件。包含有近5千个常用字的组词,字段组词前面的10\20\30\40......
  • 2万多条经典台词电影台词ACCESS\EXCEL数据库
    电影台词中有不少令人难忘的好句子,很多时候,爱上一部电影不是因为镜头里的帅哥靓女,不是因为故事情节的跌宕起伏,只是因为有那么一句话,在主人公说出口的那一瞬间,击中我们内心最柔软的部分。本数据库收录经典电影台词大全,让我们来欣赏每部电影的经典台词、经典对白。此外,还收录了部分......
  • 24万个取名名字五行名字ACCESS\EXCEL数据库
    虽然之前弄到过一个《30万个名字汉字起名中文取名ACCESS数据库》数据库,但是有一些小缺点,比如没有单名,比如没有五行属性,而今天弄到的这份就包括,看截图:字数统计:名字单字的包含7088条,2个字的包含234337条;金属性名字有60697条,木属性名字有112682条,水属性名字有100979条,火属性名字有......
  • 简单封装一下pymysql库
      简单封装一下pymysql库my_pymysql.py#!/bin/python#-*-coding:utf-8-*-importpymysqlimportnumpydefget_connect(**kwargs):mysqldb=pymysql.connect(host=kwargs.get('host'),user=kwargs.get('user'),passw......