以下代码片段使用 NPOI 库打印 Excel 2003 文件的全部内容。首先使用标准流读取器读取 XLS 文件。可以根据需要将常用的标准标志应用于流读取器。流从 POIFSFileSystem 类读取,该类读写 Microsoft 的 OLE 2 复合文档格式,这是 Excel 文件格式的基础格式。最后,HSSFWorkbook 反映了 Excel 用户可见的 Excel 文件结构。
import NPOI;
// 读取 Excel 文件
var workbook = NPOI.Workbook.Create("/员工数据.xls")
if (!workbook) {
print("无法打开 Excel 工作簿" );
return;
}
接下来,计算公式并创建数据格式化程序实例:
// 计算公式
var formulaEvaluator = NPOI.XSSF.UserModel.XSSFFormulaEvaluator(workbook);
// 创建数据格式化程序(使用英语区域设置)
var dataFormatter = NPOI.SS.UserModel.DataFormatter(System.Globalization.CultureInfo("en-US"));
可以通过编号、名称或迭代器访问工作簿的各个工作表。以下是基于迭代器的示例:
// 遍历所有工作表
for i,sheet in workbook.each() {
print("*** 工作表 " + sheet.SheetName + " ***");
// ... 处理每张工作表
}
同样使用迭代器访问给定工作表的行。从 IRow 类型变量中获取行号并打印到控制台输出:
// 遍历工作表中的行
for i,row in sheet.each() {
print("行 " + string.format("%2d", row.RowNum + 1) + ": ");
// ... 处理每行
}
现在提取行中每个单元格的内容,格式化后写入控制台。同样处理与单元格关联的批注:
// 遍历行中的单元格
for i,cell in row.each() {
var value = dataFormatter.FormatCellValue(cell, formulaEvaluator);
print( value );
}
以下是完整代码片段,可与上面的 COM 互操作代码片段进行比较:
import NPOI;
// 读取 Excel 文件
var workbook = NPOI.Workbook.Create("/员工数据.xls")
if (!workbook) {
print("无法打开 Excel 工作簿" );
return;
}
// 计算公式
var formulaEvaluator = NPOI.XSSF.UserModel.XSSFFormulaEvaluator(workbook);
// 创建数据格式化程序(使用英语区域设置)
var dataFormatter = NPOI.SS.UserModel.DataFormatter(System.Globalization.CultureInfo("en-US"));
// 遍历所有工作表
for i,sheet in workbook.each() {
// 遍历工作表中的行
for i,row in sheet.each() {
print("行 " + string.format("%2d", row.RowNum + 1) + ": ");
// ... 处理每行
// 遍历行中的单元格
for i,cell in row.each() {
var value = dataFormatter.FormatCellValue(cell, formulaEvaluator);
var comment = cell.CellComment ? cell.CellComment.String;
print( value,comment );
}
}
}