arrays - 我将一个数组传递给 'xlsx' 以获取一个 Excel 文件,但我得到了在每一行中解析的数组元素

标签 arrays angular excel typescript

我有一个 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写的吗? see this SO question .
如果你想试试

var ws = XLSX.utils.json_to_sheet([
  { A: "one", B: "two", C: "three" }
], {header: ["A", "B", "C"], skipHeader: true});;
请让我知道它是否有效(以及最终的错误消息)。
保重,祝你好运。

关于arrays - 我将一个数组传递给 'xlsx' 以获取一个 Excel 文件,但我得到了在每一行中解析的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68246482/

相关文章:

带内存的 Python 随机座位生成器

c# - 将 Excel 电子表格读取到数据表中

c - C中两个数组相加

html - PrimeNG <p-table> 和 <p-calendar> 图标在 Internet Explorer (IE 7,11) 中刷新后不显示

Angular 5 : interchange locations of dynamic components

javascript - ionic 2中的 native facebook登录

vba - #ERROR : Unable to get match property of the worksheet class. 我已经尝试过在线提供的解决方案

java - 事件处理程序有编译错误 : "local variables referenced from a lambda expression must be final"

java - 某些代码中错误数组索引超出范围

c - C 中变量和数组中的指针取消引用