在 TypeScript 中处理 Excel:库、示例和工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 TypeScript 中处理 Excel:库、示例和工具



TypeScript 是用于开发 Web 应用程序的强大语言,经常需要以编程方式处理 Excel 文件:读取报告、生成表格、导出数据。在本文中,我们将介绍三个用于在 TypeScript 中处理 Excel 的主要库、它们的功能,并提供实际示例。



1. 用于在 TypeScript 中处理 Excel 的主要库



有几种流行的解决方案,每种都有其优势:



  • ExcelJS — 用于读取、写入和样式化 Excel 文件的最流行库。支持 .xlsx、.xlsm、.csv,以及公式、条件格式和图像的处理。
  • xlsx (SheetJS) — 用于基本操作(读取和写入表格数据)的轻量级快速库。非常适合简单任务。
  • excel4node — 用于创建 Excel 文件的库,侧重于性能和对样式的支持。


2. 安装和配置



使用 npm 安装所选库。我们来看一下 ExcelJS 和 xlsx 的安装:



npm install exceljsnpm install xlsx


对于 TypeScript,额外安装类型(xlsx 的类型已内置):



npm install @types/exceljs --save-devnpm install @types/node --save-dev


3. 通过 ExcelJS 处理 Excel



3.1 创建和写入文件



创建一个带有标题和数据的新 Excel 文件:



import * as ExcelJS from 'exceljs';

async function createExcel() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('数据');

// 定义列 worksheet.columns = [ { header: '姓名', key: 'name', width: 25 }, { header: '年龄', key: 'age', width: 10 }, { header: '城市', key: 'city', width: 20 } ];

// 添加行 worksheet.addRow({ name: '安娜', age: 28, city: '莫斯科' }); worksheet.addRow({ name: '伊万', age: 35, city: '圣彼得堡' }); worksheet.addRow({ name: '奥尔加', age: 22, city: '喀山' });

// 样式化标题 const headerRow = worksheet.getRow(1); headerRow.font = { bold: true, color: { argb: 'FFFFFFFF' } }; headerRow.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } };

// 保存文件 await workbook.xlsx.writeFile('example.xlsx'); console.log('文件已创建');}

createExcel();


3.2 读取现有文件



读取之前创建的文件中的数据:



async function readExcel() {  const workbook = new ExcelJS.Workbook();  await workbook.xlsx.readFile('example.xlsx');

const worksheet = workbook.getWorksheet('数据'); if (!worksheet) return;

worksheet.eachRow((row, rowNumber) => { const rowData = row.values as any[]; console.log(`行 ${rowNumber}: ${rowData.join(', ')}`); });}

readExcel();


4. 通过 xlsx (SheetJS) 处理 Excel



4.1 读取数据



xlsx 库允许快速从文件中读取数据:



import * as XLSX from 'xlsx';

function readXlsxFile(filePath: string) { const workbook = XLSX.readFile(filePath); const sheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[sheetName]; const data = XLSX.utils.sheet_to_json(worksheet); console.log(data);}

readXlsxFile('example.xlsx');


4.2 创建和写入



从对象数组创建一个简单的 Excel 文件:



function createXlsx() {  const data = [    { Name: '安娜', Age: 28, City: '莫斯科' },    { Name: '伊万', Age: 35, City: '圣彼得堡' }  ];

const worksheet = XLSX.utils.json_to_sheet(data); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, wor

推荐