#javascript #node.js #exceljs
#javascript #node.js #exceljs
Вопрос:
Я пытаюсь прочитать -> манипулировать -> создать excel. Я использую streams
поддерживаемый exceljs
модулем. большая часть из них работает нормально, но стили, похоже, не копируются. Ниже приведена моя соответствующая часть кода.
const readerOptions = {
sharedStrings: 'cache',
hyperlinks: 'cache',
worksheets: 'emit',
styles: 'cache',
};
const writerOptions = {
filename: fpath,
useStyles: true,
useSharedStrings: true
}
const workbook = new ExcelJS.stream.xlsx.WorkbookWriter(writerOptions)
const myworksheet = workbook.addWorksheet('Sheet 1');
const workbookReader = new ExcelJS.stream.xlsx.WorkbookReader(sheet.path, readerOptions);
workbookReader.read();
workbookReader.on('worksheet', worksheet => {
worksheet.on('row', row => {
myworksheet.addRow(row.values).commit();
});
});
workbookReader.on('end', async () => {
await workbook.commit();
});
workbookReader.on('error', (err) => {
console.log(err);
});
пожалуйста, смотрите прикрепленное изображение для справки. Слева находится исходный файл Excel, из которого я пытаюсь манипулировать и генерировать другой Excel, а справа — недавно созданный файл Excel из источника.
Любая помощь в том, как это исправить, будет действительно отличной, спасибо.
Ответ №1:
Для тех, кто наткнулся на этот пост, приведенное ниже исправление сработало для меня.
const readerOptions = {
sharedStrings: 'cache',
hyperlinks: 'cache',
worksheets: 'emit',
styles: 'cache',
};
const writerOptions = {
filename: fpath,
useStyles: true,
useSharedStrings: true
}
const workbook = new ExcelJS.stream.xlsx.WorkbookWriter(writerOptions)
const myworksheet = workbook.addWorksheet('Sheet 1');
const workbookReader = new ExcelJS.stream.xlsx.WorkbookReader(sheet.path, readerOptions);
workbookReader.read();
workbookReader.on('worksheet', worksheet => {
worksheet.on('row', row => {
const r = myworksheet.addRow();
Object.assign(r, row);
});
});
workbookReader.on('end', async () => {
await workbook.commit();
});
Это скопировало строки со всей правильной информацией о стиле. (Одна проблема, с которой я все еще сталкиваюсь, заключается в том, что это плохо работает со строками с объединенными ячейками)