如何使用C# NPOI库正确地读取一个Excel(xls)文件,并在此基础上追加新的数据行?
时间: 2024-12-21 19:27:29 浏览: 32
使用C#的NPOI库读取Excel(xls)文件并追加新数据行的步骤如下:
1. **添加引用**:在你的项目中添加NPOI的NuGet包,例如 `NPOI` 和 `NPOI.SS.UserModel`。
2. **打开工作簿**:
```csharp
using(NPOI.HSSF.usermodel.HSSFWorkbook workbook = new HSSFWorkbook())
{
// 使用文件路径加载已有 Excel 文件
string filePath = "your_excel_file.xls";
using(Stream inputStream = File.OpenRead(filePath))
{
workbook.Load(inputStream);
}
// 获取你要操作的工作表
HSSFSheet sheet = workbook.GetSheetAt(0); // 索引从0开始
}
```
3. **读取现有数据**:
```csharp
foreach(HSSFRow row in sheet.Rows)
{
// 遍历每一行,获取单元格信息
for(int i = 0; i < row.Cells.Count; i++)
{
HSSFCell cell = row.GetCell(i);
if(cell != null)
{
string cellValue = cell.ToString(); // 获取单元格值
Console.WriteLine(cellValue);
}
}
}
```
4. **追加新数据行**:
```csharp
// 创建一个新的行
HSSFRow newRow = sheet.CreateRow(sheet.LastRowNum + 1);
newRow.CreateCell(0).setCellValue("新数据1"); // 设置第一个单元格的数据
newRow.CreateCell(1).setCellValue("新数据2"); // 对应第二列
// 可能还需要考虑其他列的情况
// ...
```
5. **保存更改**:
```csharp
// 写回到原文件
FileStream outputStream = File.Create("your_new_excel_file.xls");
workbook.Write(outputStream);
outputStream.Close();
// 或者覆盖原文件
workbook.Save("your_excel_file.xls");
// 关闭工作簿
workbook.Close();
```
阅读全文