NPOI 操作详解(操作Excel)

目录

1. 安装 NPOI

2. 使用 NPOI 创建新 Excel 文件

3. 设置列宽和行高

1. 设置列宽 

2. 设置行高

3. 同时设置列宽和行高

4. 设置统一的行高

5. 设置统一的列宽

6. 应用统一的行高和列宽

4. 合并单元格

5. 设置单元格样式(字体、边框、背景色等) 

5. 向现有的 Excel 文件追加数据

6. 综合操作示例

7.读取表格


概述:NPOI 是一个功能强大的第三方库,支持 .xls 和 .xlsx 格式,且完全开源。NPOI 可以在任何平台上运行,无需安装 Excel。

优点:跨平台,支持 .xls 和 .xlsx 格式,性能较好。
缺点:与原生 Excel 功能兼容性较低,格式化和高级功能支持相对有限。

1. 安装 NPOI

2. 使用 NPOI 创建新 Excel 文件

以下代码演示了如何使用 NPOI 创建一个新的 Excel 文件,并向其中写入 DataTable 数据。 

using System.Data;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; // 对于 .xlsx 文件
using NPOI.HSSF.UserModel; // 对于 .xls 文件

public void CreateNewExcel(string filePath, DataTable dataTable)
{
    IWorkbook workbook;
    if (filePath.EndsWith(".xlsx"))
        workbook = new XSSFWorkbook(); // 创建 .xlsx 文件
    else
        workbook = new HSSFWorkbook(); // 创建 .xls 文件

    var sheet = workbook.CreateSheet("Sheet1");

    // 写入表头
    var headerRow = sheet.CreateRow(0);
    for (int i = 0; i < dataTable.Columns.Count; i++)
    {
        headerRow.CreateCell(i).SetCellValue(dataTable.Columns[i].ColumnName);
    }

    // 写入数据
    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
        var dataRow = sheet.CreateRow(i + 1);
        for (int j = 0; j < dataTable.Columns.Count; j++)
        {
            dataRow.CreateCell(j).SetCellValue(dataTable.Rows[i][j].ToString());
        }
    }

    // 保存文件
    using (var stream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
    {
        workbook.Write(stream);
    }
}
3. 设置列宽和行高
1. 设置列宽 
public void SetColumnWidth(IWorkbook workbook, int sheetIndex, int columnIndex)
{
    var sheet = workbook.GetSheetAt(sheetIndex);

    // 设置列宽(单位是 1/256 字符宽度)
    sheet.SetColumnWidth(columnIndex, 20 * 256); // 设置第 1 列宽度为 20
}
2. 设置行高
public void SetColumnRowHeight(IWorkbook workbook, int sheetIndex, int rowIndex)
{
    var sheet = workbook.GetSheetAt(sheetIndex);

    // 设置行高(单位是点数)
    var row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex);
    row.HeightInPoints = 25; // 设置行高为 25 点
}
3. 同时设置列宽和行高
public void SetColumnWidthAndRowHeight(IWorkbook workbook, int sheetIndex, int columnIndex, int rowIndex)
{
    var sheet = workbook.GetSheetAt(sheetIndex);

    // 设置列宽(单位是 1/256 字符宽度)
    sheet.SetColumnWidth(columnIndex, 20 * 256); // 设置第 1 列宽度为 20

    // 设置行高(单位是点数)
    var row = sheet.GetRow(rowIndex) ?? sheet.CreateRow(rowIndex);
    row.HeightInPoints = 25; // 设置行高为 25 点
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值