1
我如何使用Node.js和js-xlsx產生新的Excel文件。 當生成一個新文件時,我希望它被保存到本地磁盤。的Node.js - 保存XLSX到磁盤
這段代碼是用來生成並下載一個新的Excel文件,怎麼能存儲到磁盤呢?
FileManagement.generateExcelFile("xlsx-filtered-list", "error-sheet", finalResult, res);
generateExcelFile(fileName, sheetName, data, res) {
const workSheet = sheet_from_array_of_arrays(data);
const workBook = new Workbook();
workBook.SheetNames.push(sheetName);
workBook.Sheets[sheetName] = workSheet;
const workBookOptions = { bookType:'xlsx', bookSST:false, type:'binary' };
const workBookFile = xlsx.write(workBook, workBookOptions);
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
res.setHeader('Content-Disposition', 'attachment; filename='+fileName);
res.end(workBookFile, 'binary');
// Functions work Excel generation (don't touch)
function Workbook() {
if(!(this instanceof Workbook)) return new Workbook();
this.SheetNames = [];
this.Sheets = {};
}
function sheet_from_array_of_arrays(data) {
const workSheet = {};
const range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }};
for(let R = 0; R != data.length; ++R) {
for(let C = 0; C != data[R].length; ++C) {
if(range.s.r > R) range.s.r = R;
if(range.s.c > C) range.s.c = C;
if(range.e.r < R) range.e.r = R;
if(range.e.c < C) range.e.c = C;
const cell = {v: data[R][C] };
if(cell.v == null) continue;
const cell_ref = xlsx.utils.encode_cell({c:C,r:R});
if(typeof cell.v === 'number') cell.t = 'n';
else if(typeof cell.v === 'boolean') cell.t = 'b';
else if(cell.v instanceof Date) {
cell.t = 'n'; cell.z = xlsx.SSF._table[14];
cell.v = datenum(cell.v);
}
else cell.t = 's';
workSheet[cell_ref] = cell;
}
}
if(range.s.c < 10000000) workSheet['!ref'] = xlsx.utils.encode_range(range);
return workSheet;
}
}
常量FS =需要( 'FS'); fs.writeFileSync('./ public/uploaded-files/hello.xlsx',FileManagement.generateExcelFile(「error-list.xlsx」,「error-sheet」,filteredData [1],res)); 此代碼將文件寫入磁盤,但由於文件格式擴展錯誤而無法使用。 – Nenson