aardio 文档

使用 NPOI 处理 Excel 97-2003 文档格式

NPOI 可使用 NPOI.XSSF.Extractor.XSSFExcelExtractor 类来提取 Excel 2007 格式(.xlsx)的工作簿内容。但对于 Excel 97-2003 格式(.xls 文件扩展名),需要改用不同的 API。要读取这类工作簿,你需要使用 NPOI.HSSF.Extractor.ExcelExtractor 类。这个类继承自基类 NPOI.POIOLE2TextExtractor 并实现了 NPOI.SS.Extractor.IExcelExtractor 接口,其公开的 Text 属性可以获取包含所有工作表内容的文档文本。

API 使用方法

ExcelExtractor 接收一个 NPOI.POIFS.FileSystem.POIFSFileSystem 类型的输入参数,而该参数又需要一个 System.IO.FileStream 类型的输入。要读取 Excel 工作簿内容,首先需要创建 FileStream 实例(传入文件路径作为参数),然后创建 POIFSFileSystem 实例并将其传递给 ExcelExtractor,最后调用 Text 属性获取文档内容。

以下是 aardio 实现代码(注意处理访问/读取内容时可能出现的异常):

import NPOI;

var fileStream = System.IO.FileStream("/员工数据.xls", "r");


// 创建 POI 文件系统对象
var fileSystem = NPOI.POIFS.FileSystem.POIFSFileSystem(fileStream);

// 创建 Excel 提取器
var excelExtractor = NPOI.HSSF.Extractor.ExcelExtractor(fileSystem);

// 设置提取选项(均为可选参数)
excelExtractor.IncludeBlankCells = false;    // 是否包含空白单元格
excelExtractor.IncludeCellComments = false;   // 是否包含单元格批注
excelExtractor.IncludeHeaderFooter = false;   // 是否包含页眉页脚
excelExtractor.IncludeSheetNames = false;     // 是否包含工作表名称

print(excelExtractor.Text);

代码说明

  1. 资源管理:aardio 中不需要像 C# 那样显式使用 using 语句块,但需要手动在 finally 块中释放资源。

  2. 异常处理:使用 try-catch 捕获异常,aardio 的异常对象 e 会自动转换为字符串显示错误信息。

  3. 可选参数:所有 Include* 属性都是可选的,默认值为 false,可以根据需要调整。

  4. 文件流FileStream 在 aardio 中创建后需要手动关闭和释放,这与 C# 的 IDisposable 模式一致。

  5. 返回值:函数返回提取的文本内容,如果出错则返回空字符串。

这个函数可以方便地提取旧版 Excel 文件中的所有文本内容,适用于数据迁移、内容分析等场景。

Markdown 格式