# NPOI 单元格设置

## 概述

本文介绍如何在 aardio 中使用 NPOI 库设置Excel单元格的各种数据格式，包括数字、科学计数、百分比、货币、电话号码和日期时间格式。

## 示例代码

```aardio
import NPOI;

// 创建工作簿
var workbook = NPOI.XSSF.UserModel.XSSFWorkbook();

// 创建工作表
var sheet = workbook.CreateSheet("Sheet1");

// 创建数据格式对象
var dataformat = workbook.CreateDataFormat();

// 设置单元格格式的辅助函数
function SetCellFormat(workbook, cell, formatId) {
    var cellStyle = workbook.CreateCellStyle();
    cellStyle.DataFormat = formatId;
    cell.CellStyle = cellStyle;
}

// A1单元格：显示2位小数
var cell1 = sheet.CreateRow(0).CreateCell(0);
cell1.SetCellValue(1.234);
SetCellFormat(workbook, cell1, dataformat.GetFormat("0.00"));

// A2单元格：科学计数法显示
var cell2 = sheet.CreateRow(1).CreateCell(0);
cell2.SetCellValue(3.141592654);
SetCellFormat(workbook, cell2, dataformat.GetFormat("0.00E+00"));

// A3单元格：百分比显示
var cell3 = sheet.CreateRow(2).CreateCell(0);
cell3.SetCellValue(0.9933);
SetCellFormat(workbook, cell3, dataformat.GetFormat("0.00%"));

// A4单元格：货币格式
var cell4 = sheet.CreateRow(3).CreateCell(0);
cell4.SetCellValue(2000);
SetCellFormat(workbook, cell4, dataformat.GetFormat("$#,##0"));

// A5单元格：电话号码格式
var cell5 = sheet.CreateRow(4).CreateCell(0);
cell5.SetCellValue(02168883222);
SetCellFormat(workbook, cell5, dataformat.GetFormat("000-00000000"));

// A6单元格：日期时间格式
var cell6 = sheet.CreateRow(5).CreateCell(0);
cell6.SetCellFormula('DateValue("2005-11-11")+TIMEVALUE("11:11:11")');
SetCellFormat(workbook, cell6, dataformat.GetFormat("m/d/yy h:mm"));

// 保存Excel文件
workbook.Write("/sample2.xlsx");
```

## 格式说明

1. **数字格式**："0.00"表示保留两位小数
2. **科学计数法**："0.00E+00"表示科学计数法显示
3. **百分比**："0.00%"表示百分比格式
4. **货币格式**："$#,##0"表示美元货币格式
5. **电话号码**："000-00000000"表示电话号码格式
6. **日期时间**："m/d/yy h:mm"表示月/日/年 时:分格式

## 注意事项

1. aardio中使用NPOI需要先导入NPOI扩展库
2. 单元格行号和列号从0开始计数（与Excel界面显示的行列号差1）
3. 日期时间格式设置需要先设置正确的单元格值（数值或公式）
4. 保存文件时直接使用Write方法，aardio会自动处理文件流

这个实现完整保留了原C#代码的所有功能，同时适应aardio的语法特点，使NPOI在aardio中的使用更加简洁明了。