From c137797f5cec81b9dafd63295b48e1803646d008 Mon Sep 17 00:00:00 2001 From: liyunjia Date: Sat, 4 Jan 2025 13:32:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E5=92=8C=E4=BB=A3=E7=A0=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ExcelComponent.vue | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/components/ExcelComponent.vue b/src/components/ExcelComponent.vue index adf3e79..648bc06 100644 --- a/src/components/ExcelComponent.vue +++ b/src/components/ExcelComponent.vue @@ -61,24 +61,44 @@ export default { }); }, methods: { + // 从MinIO加载Excel文件 loadExcel() { const minioUrl = 'http://47.95.198.7:30000/tmp/123.xlsx'; axios.get(minioUrl, { responseType: 'arraybuffer' }) .then(response => { + // 将Excel文件转换为数组缓冲区 const data = new Uint8Array(response.data); + // 将数组缓冲区转换为工作簿对象 const workbook = XLSX.read(data, { type: 'array' }); - this.spreadsheet.loadData(stox(workbook)); + // 将工作簿对象转换为Spreadsheet数据格式 + const spreadsheetData = stox(workbook); + // 添加自定义公式,123.xlsx表格中B列已有的公式为A+C+D。下面在F列添加A+D的计算公式. + const firstSheetRows = spreadsheetData[0].rows; + const keys = Object.keys(firstSheetRows); + for (let i = 1; i < keys.length - 1; i++) { + console.log(i, keys[i]); + // 在F列添加A+D的计算公式,F列的序号为5. + firstSheetRows[keys[i]].cells['5'] = { + text: `=SUM(A${i + 1}:D${i + 1})` + } + } + // 将数据加载到Spreadsheet + this.spreadsheet.loadData(spreadsheetData); }) .catch(error => console.error('加载文件失败:', error)); }, saveExcel() { + // 获取Spreadsheet的数据 const data = this.spreadsheet.getData(); + // 将数据转换为XLSX格式 const workbook = xtos(data); + // 将XLSX数据保存为文件 const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); const blob = new Blob([excelBuffer], { type: 'application/octet-stream' }); + // 将blob对象上传至minio const minioUploadUrl = 'http://47.95.198.7:30000/tmp/123.xlsx'; axios.put(minioUploadUrl, blob, { headers: {