arrays - 我将一个数组传递给“xlsx”以获取一个 Excel 文件,但我得到了在每一行中解析的数组元素
问题描述
我有一个 T 类型的数组,我希望将其转换为 Excel 文档表,使数组的每个元素都列在表上的单独行中。
let arr = ['one', 'two', 'three']
当我将此数组传递给我从互联网上获取的函数时:
static exportArrayToExcel(arr: any[], name?: string) {
let { sheetName, fileName } = getFileName(name);
var wb = XLSX.utils.book_new();
var ws = XLSX.utils.json_to_sheet(arr);
XLSX.utils.book_append_sheet(wb, ws, sheetName);
XLSX.writeFile(wb, `${fileName}.xlsx`);
}
它的行为不像我预期的那样。它不是返回每行包含元素的工作表,而是将每个元素分散在 excel 中的行单元格中例如:而不是
row1: |'one'|
row2: |'two'|
row3: |'three'|
它返回:
row1: o | n | e
row2: t | w | o
ETC...
我不知道为什么该函数会解析数组的每个元素并将其分散。
该函数存在于一个名为 TableUtil 的类中:
import * as XLSX from "xlsx";
const getFileName = (name: string) => {
let timeSpan = new Date().toISOString();
let sheetName = name || "ExportResult";
let fileName = `${sheetName}-${timeSpan}`;
return {
sheetName,
fileName,
};
};
export class TableUtil {
static exportTableToExcel(tableId: string, name?: string) {
let { sheetName, fileName } = getFileName(name);
let targetTableElm = document.getElementById(tableId);
let wb = XLSX.utils.table_to_book(targetTableElm, <
XLSX.Table2SheetOpts
>{
sheet: sheetName,
});
XLSX.writeFile(wb, `${fileName}.xlsx`);
}
static exportArrayToExcel(arr: any[], name?: string) {
let { sheetName, fileName } = getFileName(name);
var wb = XLSX.utils.book_new();
var ws = XLSX.utils.json_to_sheet(arr);
XLSX.utils.book_append_sheet(wb, ws, sheetName);
XLSX.writeFile(wb, `${fileName}.xlsx`);
}
}
解决方案
可能是因为你的数组不是用json写的吗?看到这个问题。
如果你想试试
var ws = XLSX.utils.json_to_sheet([
{ A: "one", B: "two", C: "three" }
], {header: ["A", "B", "C"], skipHeader: true});;
请让我知道它是否有效(以及最终的错误消息)。
保重,祝你好运。