|
@@ -0,0 +1,53 @@
|
|
|
+import FileSaver from 'file-saver'
|
|
|
+import XLSX from 'xlsx'
|
|
|
+import { Message, MessageBox } from 'element-ui'
|
|
|
+// 导出表格
|
|
|
+/**
|
|
|
+ * @param { String } id 表格id
|
|
|
+ * @param { Array } width 配置生成文件表格所占的字符也就是表格每一行的宽度
|
|
|
+ * @param { String } name 生成文件名字
|
|
|
+ */
|
|
|
+ const downTable = (id, width, name) => {
|
|
|
+ name = name + '.xlsx' || 'test.xlsx'
|
|
|
+ console.log(document.getElementById(id))
|
|
|
+ const excel = exportExcel(document.getElementById(id), width, name)
|
|
|
+ if (excel) {
|
|
|
+ Message({
|
|
|
+ message: '导出成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 3 * 1000
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+ /**
|
|
|
+ * 导出表格为excel格式
|
|
|
+ * @param { DOM } ele // document.getElementById('table')
|
|
|
+ * @param { string } fileName // test.xlsx
|
|
|
+ */
|
|
|
+ function exportExcel(ele, wscols, fileName) {
|
|
|
+ var fix = document.querySelector('.el-table__fixed');
|
|
|
+ /* 从表生成工作簿对象 */
|
|
|
+ let wb;
|
|
|
+ if (fix) {
|
|
|
+ wb = XLSX.utils.table_to_book(ele.removeChild(fix));
|
|
|
+ ele.appendChild(fix);
|
|
|
+ } else {
|
|
|
+ wb = XLSX.utils.table_to_book(ele);
|
|
|
+ }
|
|
|
+ wb.Sheets.Sheet1['!cols'] = wscols;
|
|
|
+ /* 获取二进制字符串作为输出 */
|
|
|
+ const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array', cellDates: true })
|
|
|
+ try {
|
|
|
+
|
|
|
+ // Blob 对象表示一个不可变、原始数据的类文件对象。
|
|
|
+ // Blob 表示的不一定是JavaScript原生格式的数据。
|
|
|
+ // File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
|
|
|
+ // 返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
|
|
|
+ // 设置导出文件名称
|
|
|
+ FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), fileName)
|
|
|
+ } catch (e) {
|
|
|
+ if (typeof console !== 'undefined') console.log(e, wbout)
|
|
|
+ }
|
|
|
+ return wbout
|
|
|
+ }
|
|
|
+ export default downTable
|