Files
Excelbuilder/src/utils/excelWriter.js

36 lines
1021 B
JavaScript

import XLSX from 'xlsx'
import { buildWorkbookSheets } from './signalTableBuilder'
import { saveBlob } from './filePicker'
export function createSignalTableWorkbook(data) {
const workbook = XLSX.utils.book_new()
buildWorkbookSheets(data).forEach(sheet => {
const worksheet = XLSX.utils.aoa_to_sheet(sheet.rows)
worksheet['!cols'] = (sheet.cols || []).map(wch => ({ wch }))
XLSX.utils.book_append_sheet(workbook, worksheet, sheet.name)
})
return workbook
}
export async function exportSignalTable(data, filename = 'SignalTable.xlsx') {
const workbook = createSignalTableWorkbook(data)
const content = XLSX.write(workbook, {
bookType: 'xlsx',
type: 'array'
})
const blob = new Blob([content], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
return saveBlob(blob, filename, [
{
description: 'Excel 工作簿',
accept: {
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.xlsx']
}
}
])
}