SheetJS xlsx-cell styling

Gra*_*ner 14 excel xlsx angularjs sheetjs

I am referring this example to export a worksheet https://github.com/SheetJS/js-xlsx/issues/817. How to do cell styling like background coloring,font size and increasing the width of the cells to make the data fit exactly.I have gone through the documentation but couldn't find any proper examples to use fill etc.Is there a way to do the formatting?

Below is the code snippet:
    /* make the worksheet */
var ws = XLSX.utils.json_to_sheet(data);

/* add to workbook */
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "People");

/* write workbook (use type 'binary') */
var wbout = XLSX.write(wb, {bookType:'xlsx', type:'binary'});

/* generate a download */
function s2ab(s) {
    var buf = new ArrayBuffer(s.length);
    var view = new Uint8Array(buf);
    for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
    return buf;
}
saveAs(new Blob([s2ab(wbout)],{type:"application/octet- 
stream"}),"sheetjs.xlsx");
Run Code Online (Sandbox Code Playgroud)

Jes*_*per 21

有很多社区分叉允许样式化。我个人最喜欢的是xlsx-js-style。与其他库相比,它是最新的并且运行良好。

Sheetjs-style也是最新的,但我遇到了一些问题。请参阅:样式不起作用

xlsx 样式不是最新的。目前 SheetJS:master 背后有 397 个提交。如果可能的话我不会使用它。

所有这些库都共享相同的样式选项。这里有很多例子:

for (i in ws) {
    if (typeof(ws[i]) != "object") continue;
    let cell = XLSX.utils.decode_cell(i);

    ws[i].s = { // styling for all cells
        font: {
            name: "arial"
        },
        alignment: {
            vertical: "center",
            horizontal: "center",
            wrapText: '1', // any truthy value here
        },
        border: {
            right: {
                style: "thin",
                color: "000000"
            },
            left: {
                style: "thin",
                color: "000000"
            },
        }
    };

    if (cell.c == 0) { // first column
        ws[i].s.numFmt = "DD/MM/YYYY HH:MM"; // for dates
        ws[i].z = "DD/MM/YYYY HH:MM";
    } else { 
        ws[i].s.numFmt = "00.00"; // other numbers
    }

    if (cell.r == 0 ) { // first row
        ws[i].s.border.bottom = { // bottom border
            style: "thin",
            color: "000000"
        };
    }

    if (cell.r % 2) { // every other row
        ws[i].s.fill = { // background color
            patternType: "solid",
            fgColor: { rgb: "b2b2b2" },
            bgColor: { rgb: "b2b2b2" } 
        };
    }
}
Run Code Online (Sandbox Code Playgroud)


Vik*_*ngh 17

造型只适用专业版SheetJS。但我认为您使用的是社区版(免费版)。在社区版本样式不可用

您可以在这里查看官方信息

我们还提供具有性能增强功能、样式等附加功能和专门支持的专业版。

  • 您可以使用 https://github.com/protobi/js-xlsx。该叉子支持 Excel 中的样式。 (5认同)