|
@@ -2,42 +2,55 @@ import ExcelJS from "exceljs";
|
|
|
import { saveAs } from "file-saver";
|
|
|
import { MessagePlugin } from "tdesign-vue-next";
|
|
|
|
|
|
-export function importExcel() {
|
|
|
- const input = document.createElement("input");
|
|
|
- input.type = "file";
|
|
|
- input.accept =
|
|
|
- ".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel,application/zip";
|
|
|
- input.onchange = (event) => {
|
|
|
- const elem: any = event.target;
|
|
|
+export async function importExcel(columns: any[]) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ const input = document.createElement("input");
|
|
|
+ input.type = "file";
|
|
|
+ input.accept =
|
|
|
+ ".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel,application/zip";
|
|
|
+ input.onchange = (event) => {
|
|
|
+ const elem: any = event.target;
|
|
|
|
|
|
- if (elem.files && elem.files[0].name.indexOf(".xlsx") > 0) {
|
|
|
- const workbook = new ExcelJS.Workbook();
|
|
|
- const reader = new FileReader();
|
|
|
- reader.readAsArrayBuffer(elem.files[0]);
|
|
|
- reader.onload = async () => {
|
|
|
- const buffer: any = reader.result;
|
|
|
- await workbook.xlsx.load(buffer);
|
|
|
- // 默认只解析第一个sheet
|
|
|
- const worksheet = workbook.worksheets[0];
|
|
|
- // 获取sheet1的所有rows
|
|
|
- const rows = worksheet.getSheetValues();
|
|
|
- if (rows.length === 0) {
|
|
|
- MessagePlugin.warning("导入的excel文件不可为空!");
|
|
|
- return;
|
|
|
- }
|
|
|
- let dataArry = [];
|
|
|
- worksheet.eachRow((row, rowNumber) => {
|
|
|
- if (rowNumber === 1) {
|
|
|
+ if (elem.files && elem.files[0].name.indexOf(".xlsx") > 0) {
|
|
|
+ const workbook = new ExcelJS.Workbook();
|
|
|
+ const reader = new FileReader();
|
|
|
+ reader.readAsArrayBuffer(elem.files[0]);
|
|
|
+ reader.onload = async () => {
|
|
|
+ const buffer: any = reader.result;
|
|
|
+ await workbook.xlsx.load(buffer);
|
|
|
+ // 默认只解析第一个sheet
|
|
|
+ const worksheet = workbook.worksheets[0];
|
|
|
+ // 获取sheet1的所有rows
|
|
|
+ const rows = worksheet.getSheetValues();
|
|
|
+ if (rows.length === 0) {
|
|
|
+ MessagePlugin.warning("导入的excel文件不可为空!");
|
|
|
+ return;
|
|
|
}
|
|
|
- row.eachCell((cell, colNumber) => {
|
|
|
- console.log("cell", cell, colNumber);
|
|
|
+ let data: any = [];
|
|
|
+ let indexKeyMap: any = {};
|
|
|
+ worksheet.eachRow((row, rowNumber) => {
|
|
|
+ let _data: any = {};
|
|
|
+ row.eachCell((cell, colNumber) => {
|
|
|
+ if (rowNumber === 1) {
|
|
|
+ let _index = columns.findIndex(
|
|
|
+ (item) => item.header === cell.value
|
|
|
+ );
|
|
|
+ indexKeyMap[colNumber] = columns[_index].key;
|
|
|
+ } else {
|
|
|
+ _data[indexKeyMap[colNumber]] = cell.value;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (rowNumber !== 1) {
|
|
|
+ data.push(_data);
|
|
|
+ }
|
|
|
});
|
|
|
- });
|
|
|
- MessagePlugin.success("导入成功!");
|
|
|
- };
|
|
|
- }
|
|
|
- };
|
|
|
- input.click();
|
|
|
+ resolve(data);
|
|
|
+ MessagePlugin.success("导入成功!");
|
|
|
+ };
|
|
|
+ }
|
|
|
+ };
|
|
|
+ input.click();
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
export function saveAsExcel(
|