|
@@ -1,8 +1,8 @@
|
|
|
import fs from 'file-saver'
|
|
|
import XLSX from 'xlsx'
|
|
|
import {clone} from "./clone";
|
|
|
-import {ElMessageBox} from "element-plus";
|
|
|
-import {stringIsBlank, stringNotBlank} from "./blank-utils";
|
|
|
+import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
+import {listIsBlank, stringIsBlank, stringNotBlank} from "./blank-utils";
|
|
|
|
|
|
export function Export(json, fields, filename) {
|
|
|
const temp = clone(json)
|
|
@@ -14,57 +14,45 @@ export function Export(json, fields, filename) {
|
|
|
delete item[i]; //删除原先的对象属性
|
|
|
}
|
|
|
})
|
|
|
- if (stringNotBlank(filename)) {
|
|
|
- let sheetName = filename //excel的文件名称
|
|
|
- let wb = XLSX.utils.book_new() //工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
|
|
|
- let ws = XLSX.utils.json_to_sheet(temp, {header: Object.values(fields)}) //将JS对象数组转换为工作表。
|
|
|
- wb.SheetNames.push(sheetName)
|
|
|
- wb.Sheets[sheetName] = ws
|
|
|
- const defaultCellStyle = {
|
|
|
- font: {name: "Verdana", sz: 13, color: "FF00FF88"},
|
|
|
- fill: {fgColor: {rgb: "FFFFAA00"}}
|
|
|
- };//设置表格的样式
|
|
|
- let wopts = {
|
|
|
- bookType: 'xlsx',
|
|
|
- bookSST: false,
|
|
|
- type: 'binary',
|
|
|
- cellStyles: true,
|
|
|
- defaultCellStyle: defaultCellStyle,
|
|
|
- showGridLines: false
|
|
|
- } //写入的样式
|
|
|
- let wbout = XLSX.write(wb, wopts)
|
|
|
- let blob = new Blob([s2ab(wbout)], {type: 'application/octet-stream'})
|
|
|
- fs.saveAs(blob, filename + '.xlsx')
|
|
|
- } else {
|
|
|
- ElMessageBox.prompt('请输入导出的文件名称', '提示', {
|
|
|
- type: 'warning'
|
|
|
- }).then(({value}) => {
|
|
|
- let sheetName = value //excel的文件名称
|
|
|
- let wb = XLSX.utils.book_new() //工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
|
|
|
- let ws = XLSX.utils.json_to_sheet(temp, {header: Object.values(fields)}) //将JS对象数组转换为工作表。
|
|
|
- wb.SheetNames.push(sheetName)
|
|
|
- wb.Sheets[sheetName] = ws
|
|
|
- const defaultCellStyle = {
|
|
|
- font: {name: "Verdana", sz: 13, color: "FF00FF88"},
|
|
|
- fill: {fgColor: {rgb: "FFFFAA00"}}
|
|
|
- };//设置表格的样式
|
|
|
- let wopts = {
|
|
|
- bookType: 'xlsx',
|
|
|
- bookSST: false,
|
|
|
- type: 'binary',
|
|
|
- cellStyles: true,
|
|
|
- defaultCellStyle: defaultCellStyle,
|
|
|
- showGridLines: false
|
|
|
- } //写入的样式
|
|
|
- let wbout = XLSX.write(wb, wopts)
|
|
|
- let blob = new Blob([s2ab(wbout)], {type: 'application/octet-stream'})
|
|
|
- fs.saveAs(blob, sheetName + '.xlsx')
|
|
|
- }).catch((e) => {
|
|
|
- console.error(e)
|
|
|
- })
|
|
|
+ let sheetName = filename //excel的文件名称
|
|
|
+ let wb = XLSX.utils.book_new() //工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
|
|
|
+ let ws = XLSX.utils.json_to_sheet(temp, {header: Object.values(fields)}) //将JS对象数组转换为工作表。
|
|
|
+ wb.SheetNames.push(sheetName)
|
|
|
+ wb.Sheets[sheetName] = ws
|
|
|
+ const defaultCellStyle = {
|
|
|
+ font: {name: "Verdana", sz: 13, color: "FF00FF88"},
|
|
|
+ fill: {fgColor: {rgb: "FFFFAA00"}}
|
|
|
+ };//设置表格的样式
|
|
|
+ let wopts = {
|
|
|
+ bookType: 'xlsx',
|
|
|
+ bookSST: false,
|
|
|
+ type: 'binary',
|
|
|
+ cellStyles: true,
|
|
|
+ defaultCellStyle: defaultCellStyle,
|
|
|
+ showGridLines: false
|
|
|
+ } //写入的样式
|
|
|
+ let wbout = XLSX.write(wb, wopts)
|
|
|
+ let blob = new Blob([s2ab(wbout)], {type: 'application/octet-stream'})
|
|
|
+ fs.saveAs(blob, filename + '.xlsx')
|
|
|
+}
|
|
|
+
|
|
|
+export function ExcelName(json, fields) {
|
|
|
+ if (listIsBlank(json)) {
|
|
|
+ return ElMessage.error("没有可以导出的数据。")
|
|
|
}
|
|
|
+ ElMessageBox.prompt('请输入导出的文件名称。', '提示', {
|
|
|
+ type: "warning",
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ inputPattern: /\S/,
|
|
|
+ inputErrorMessage: '文件名不能为空 (∩•̀ω•́)⊃-*⋆',
|
|
|
+ }).then(({value}) => {
|
|
|
+ Export(json, fields, value)
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
+
|
|
|
const s2ab = s => {
|
|
|
let buf;
|
|
|
let i;
|