• 使用nodejs/exceljs读取、操作、写入excel文件


    现在edge已经不支持activexobject了,如果想用javascript操作excel文件,基本上只能用nodejs了。下面的代码就是用nodejs操作excel文件的可用方法,读取每个cell,设置颜色。

    1. // save this content as excel.js file
    2. // # npm i exceljs
    3. // # node excel.js
    4. const ExcelJS = require('exceljs');
    5. async function ProcessSheet(sheet)
    6. {
    7. let rows=sheet.rowCount, cols=sheet.columnCount;
    8. console.log(` ${rows} rows, ${cols} cols`);
    9. for(let row=1; row<=rows; row++)
    10. {
    11. let r=sheet.getRow(row);
    12. if(row==1) { if(!r.font) r.font={}; r.font.color={ argb: 'FFFF0000'}; }
    13. for(let col=1; col<=cols; col++)
    14. {
    15. let cell=r.getCell(col); let v=cell.value;
    16. console.log(` [${row}, ${col}] ${v}`);
    17. }
    18. }
    19. }
    20. async function ProcessFile(ExcelFilePath)
    21. {
    22. const workbook = new ExcelJS.Workbook();
    23. await workbook.xlsx.readFile(ExcelFilePath);
    24. let sheets=workbook.worksheets, sheetsCount=sheets.length;
    25. for(let sheet_index=0; sheet_index
    26. {
    27. let sheet=sheets[sheet_index];
    28. console.log(`sheet ${sheet.id}: ${sheet.name}`);
    29. await ProcessSheet(sheet);
    30. }
    31. // Iterate over all sheets
    32. // Note: workbook.worksheets.forEach will still work but this is better
    33. //--workbook.eachSheet(function(worksheet, sheetId) { });
    34. // fetch sheet by name
    35. //--const worksheet2 = workbook.getWorksheet('My Sheet');
    36. // fetch sheet by id
    37. //--const worksheet3 = workbook.getWorksheet(1);
    38. await workbook.xlsx.writeFile(ExcelFilePath);
    39. }
    40. function CreateFile()
    41. {
    42. const workbook = new ExcelJS.Workbook();
    43. workbook.creator = 'Me';
    44. workbook.lastModifiedBy = 'Her';
    45. workbook.created = new Date(1985, 8, 30);
    46. workbook.modified = new Date();
    47. workbook.lastPrinted = new Date(2016, 9, 27);
    48. const sheet = workbook.addWorksheet('My Sheet');
    49. workbook.removeWorksheet(sheet.id);
    50. }
    51. ProcessFile("C:\\Users\\Qiuzen\\Desktop\\艺术快递.xlsx");

  • 相关阅读:
    STL——map && set
    【设计模式1_单例模式】
    [C++基础]-多态
    如何高效地从0搭建一个游戏项目
    LeetCode刷题复盘笔记—一文搞懂62. 不同路径 && 63. 不同路径 II(动态规划系列第三篇)
    【Vue】使用v-model实现控制子组件显隐
    STM32 HAL 用DMA+空闲中断接收不定长数据
    VUE开发记录
    郑州分销系统开发|电商行业能做分销系统吗?
    计算机网络常见端口号
  • 原文地址:https://blog.csdn.net/qiuzen/article/details/139611846