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

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

javascript 复制代码
// save this content as excel.js file
// # npm i exceljs
// # node excel.js

const ExcelJS = require('exceljs');


async function ProcessSheet(sheet)
{
  let rows=sheet.rowCount, cols=sheet.columnCount;
  console.log(`  ${rows} rows, ${cols} cols`);
  for(let row=1; row<=rows; row++)
  {
    let r=sheet.getRow(row);
    if(row==1) { if(!r.font) r.font={};  r.font.color={ argb: 'FFFF0000'};  }
    for(let col=1; col<=cols; col++)
    {
      let cell=r.getCell(col); let v=cell.value;
      console.log(`  [${row}, ${col}] ${v}`);
    }
  }  
}


async function ProcessFile(ExcelFilePath)
{
  const workbook = new ExcelJS.Workbook();
  await workbook.xlsx.readFile(ExcelFilePath);
  let sheets=workbook.worksheets, sheetsCount=sheets.length;
  for(let sheet_index=0; sheet_index<sheetsCount; sheet_index++)
  {
    let sheet=sheets[sheet_index];    
    console.log(`sheet ${sheet.id}: ${sheet.name}`);
    await ProcessSheet(sheet);
  }
  
  // Iterate over all sheets
  // Note: workbook.worksheets.forEach will still work but this is better
  //--workbook.eachSheet(function(worksheet, sheetId) {     });

  // fetch sheet by name
  //--const worksheet2 = workbook.getWorksheet('My Sheet');

  // fetch sheet by id
  //--const worksheet3 = workbook.getWorksheet(1);


  await workbook.xlsx.writeFile(ExcelFilePath);
}


function CreateFile()
{
  const workbook = new ExcelJS.Workbook();

  workbook.creator = 'Me';
  workbook.lastModifiedBy = 'Her';
  workbook.created = new Date(1985, 8, 30);
  workbook.modified = new Date();
  workbook.lastPrinted = new Date(2016, 9, 27);
  
  const sheet = workbook.addWorksheet('My Sheet');
  workbook.removeWorksheet(sheet.id);
}

ProcessFile("C:\\Users\\Qiuzen\\Desktop\\艺术快递.xlsx");
相关推荐
weifont2 小时前
聊一聊Electron中Chromium多进程架构
javascript·架构·electron
大得3693 小时前
electron结合vue,直接访问静态文件如何跳转访问路径
javascript·vue.js·electron
热河暖男3 小时前
【实战解决方案】Spring Boot+Redisson构建高并发Excel导出服务,彻底解决系统阻塞难题
spring boot·后端·excel
it_remember5 小时前
新建一个reactnative 0.72.0的项目
javascript·react native·react.js
敲代码的小吉米6 小时前
前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)
前端·javascript·pdf·状态模式
da-peng-song6 小时前
ArcGIS Desktop使用入门(二)常用工具条——数据框工具(旋转视图)
开发语言·javascript·arcgis
lisw056 小时前
Python高级进阶:Vim与Vi使用指南
python·vim·excel
低代码布道师7 小时前
第五部分:第一节 - Node.js 简介与环境:让 JavaScript 走进厨房
开发语言·javascript·node.js
满怀10158 小时前
【Vue 3全栈实战】从响应式原理到企业级架构设计
前端·javascript·vue.js·vue
伟笑8 小时前
elementUI 循环出来的表单,怎么做表单校验?
前端·javascript·elementui