diff --git a/src/utils/execl-utils.ts b/src/utils/execl-utils.ts index ab735e12..2358e4b1 100644 --- a/src/utils/execl-utils.ts +++ b/src/utils/execl-utils.ts @@ -1,10 +1,8 @@ -import { read, utils } from 'xlsx'; +import { read, utils, write } from 'xlsx'; -/** - * 字体图标文件-静态资源文件路径 - */ +// 闈欐佽祫婧愯矾寰 const baseUrl = import.meta.env.VITE_HISTORY_BASE_URL; -export const scriptUrl = `${ +export const xlsxUrl = `${ baseUrl.length === 1 && baseUrl.indexOf('/') === 0 ? '' : baseUrl.indexOf('/') === -1 @@ -12,19 +10,54 @@ export const scriptUrl = `${ : baseUrl }/alarmHelp`; - +/** + * 璇诲彇鏈湴鏂囦欢 + * @param id 琛ㄦ牸ID + * @returns 鏁版嵁鏁扮粍 + * @example + * readLoalXlsx('20001').then(res=>{ + * console.log(res) + * }); + */ +export async function readLoalXlsx(id: string): Promise[]> { + const fileBolb = await (await fetch(`${xlsxUrl}/${id}.xlsx`)).arrayBuffer(); + return readSheet(fileBolb, 0); +} /** - * 格式时间字符串 - * @param dateStr 时间字符串 - * @param formatStr 时间格式 默认YYYY-MM-DD HH:mm:ss - * @returns Date对象 + * 璇诲彇琛ㄦ牸鏁版嵁 宸ヤ綔琛 + * @param fileBolb 鏂囦欢瀵硅薄 + * @param index 鏂囦欢淇濆瓨璺緞 + * @return 琛ㄦ牸瀵硅薄鍒楄〃 */ -export async function parseStrToDate(): Promise[]> { +export async function readSheet( + fileBolb: Blob | ArrayBuffer, + index: number = 0 +): Promise[]> { + const workBook = read(fileBolb); + let workSheet = workBook.Sheets[workBook.SheetNames[index]]; + return utils.sheet_to_json>(workSheet); +} - const f = await (await fetch(scriptUrl+"/20001.xlsx")).arrayBuffer(); - const wb = read(f);1 - const data = utils.sheet_to_json< Record>(wb.Sheets[wb.SheetNames[0]]); - console.log(data); - return data; - } \ No newline at end of file +/** + * 鍐欏叆琛ㄦ牸鏁版嵁锛屼竴鑸敤浜庡鍑 + * @param filePath 鏂囦欢璺緞 + * @param sheetName 宸ヤ綔琛ㄥ悕绉 + * @return xlsx鏂囦欢娴侊紝 浣跨敤saveAs鍑芥暟淇濆瓨 + * @example + * writeSheet(res.data, from.logType).then(fileBlob => + * saveAs(fileBlob, `${from.logType}_${Date.now()}.xlsx`) + * ); + * + */ +export async function writeSheet(data: any[], sheetName: string) { + const workSheet = utils.json_to_sheet(data); + // 璁剧疆鍒楀搴︼紝鍗曚綅鍘樼背 + workSheet['!cols'] = Object.keys(data[0]).map(() => { + return { wch: 20 }; + }); + const workBook = utils.book_new(); + utils.book_append_sheet(workBook, workSheet, sheetName); + const excelBuffer = write(workBook, { type: 'array', bookType: 'xlsx' }); + return new Blob([excelBuffer], { type: 'application/octet-stream' }); +}