Exceljs在浏览器js读取xlsx文件Demo,修改表格单元格,下载导出保存文件,保留样式
Demo: Exceljs在浏览器js读取xlsx文件,修改表格单元格,生成文件下载,保留历史的表格样式
请导入 xlsx 表格文件测试
纯浏览器端js,实现Excel:
- .xlsx 文件的读取、解析
- excel单元格、工作表的数据修改、插入数据、追加内容
- 下载js修改后的表格文件
- 修改后,保留老的excel的全部样式(文字颜色、背景色、字号、字体、字号大小等)
exceljs 是一个开源项目,用来操作 excel xlsx 文件(解析、生成、修改等等)。https://github.com/exceljs/exceljs
exceljs 可在浏览器端(Browser)使用,也可以在 nodejs 服务器环境使用。
相比 Xlsx.js ,exceljs.js更好的地方就是能保留原始的原始样式,不会把颜色、背景色全部清除,是一个更慷慨的开源库。
完整的源代码
<script src="https://cdn.staticfile.org/exceljs/4.3.0/exceljs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/file-saver@2.0.2/dist/FileSaver.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/promisify-file-reader@3.0.7/dist/index.min.js"></script>
<script>
async function parseExcelFile2(inputElement) {
var files = inputElement.files || [];
if (!files.length) return;
var file = files[0];
console.time();
const arrayBuffer = await PromisifyFileReader.readAsArrayBuffer(file)
var workbook = new ExcelJS.Workbook();
// workbook.xlsx.read(buffer)
await workbook.xlsx.load(arrayBuffer)
console.timeEnd();
workbook.worksheets.forEach(function (sheet) {
// 遍历工作表中的所有行(包括空行)
sheet.eachRow({ includeEmpty: true }, function (row, rowNumber) {
// 遍历一行中的所有单元格(包括空单元格)
row.eachCell({ includeEmpty: true }, function (cell, colNumber) {
// console.log('Cell ' + colNumber + ' = ' + cell.value);
cell.value = (cell.value || '') + '-append'
});
})
})
const buffer = await workbook.xlsx.writeBuffer()
var blob = new Blob([buffer])
saveAs(blob, 'exceljs.xlsx')
}
</script>