Formatting and styling works in a typical situation
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('My Sheet');
// Add headers
worksheet.addRow(["Column 1", "Column 2", "Column 3", "Column 4"]).eachCell((cell) => {
cell.fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: '1a5896' }, // Yellow color
};
cell.font = { bold: true, color: { argb: 'F8F9FA' }, }; // Make text bold
});
However while streaming a file to a HTTP response I am unable to change styling
const workbook = new exceljs.stream.xlsx.WorkbookWriter({stream: response});
const worksheet = workbook.addWorksheet('My Sheet');
// Add headers
worksheet.addRow(["Column 1", "Column 2", "Column 3", "Column 4"]).eachCell((cell) => {
cell.fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: '1a5896' }, // Yellow color
};
cell.font = { bold: true, color: { argb: 'F8F9FA' }, }; // Make text bold
});
How can I change style of cells while streaming?
By default you can't add style information due to some performance overhead, you can override this behaviour by specifying useStyles
set to true
.
const workbook = new exceljs.stream.xlsx.WorkbookWriter(
{
stream: response,
useStyles: true, // set this <-
}
);
const worksheet = workbook.addWorksheet('My Sheet');
// Add headers
worksheet.addRow(["Column 1", "Column 2", "Column 3", "Column 4"]).eachCell((cell) => {
cell.fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: '1a5896' }, // Yellow color
};
cell.font = { bold: true, color: { argb: 'F8F9FA' }, }; // Make text bold
});