编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

NPOI是一个开源的.NET库,用于读写Microsoft Office格式的文件

wxchong 2024-06-22 21:09:09 开源技术 10 ℃ 0 评论

NPOI是一个开源的.NET库,用于读写Microsoft Office格式的文件,包括Excel。以下是一个基本的帮助类,用于使用NPOI操作Excel。

首先,你需要安装NPOI库。你可以通过NuGet包管理器来安装。在Visual Studio中,打开“工具”菜单,选择“NuGet包管理器”,然后选择“管理解决方案的NuGet包”。在打开的窗口中搜索NPOI并安装。

以下是一个简单的帮助类,用于读取和写入Excel文件:

csharpusing NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; // For .xlsx
using NPOI.HSSF.UserModel; // For .xls
using System.IO;

public class ExcelHelper
{
    public static DataTable ReadExcel(string filePath)
    {
        IWorkbook workbook;
        using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            workbook = WorkbookFactory.Create(file);
        }
        ISheet sheet = workbook.GetSheetAt(0); // assuming first sheet
        DataTable dt = new DataTable();
        IRow headerRow = sheet.GetRow(0); // assuming header row is first row
        int cellCount = headerRow.LastCellNum;
        for (int j = 0; j < cellCount; j++)
        {
            DataColumn column = new DataColumn(headerRow.GetCell(j).ToString());
            dt.Columns.Add(column);
        }
        int rowCount = sheet.LastRowNum;
        for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)
        {
            IRow row = sheet.GetRow(i);
            DataRow dataRow = dt.NewRow();
            for (int j = 0; j < cellCount; j++)
            {
                dataRow[j] = row.GetCell(j).ToString();
            }
            dt.Rows.Add(dataRow);
        }
        return dt;
    }

    public static void WriteToExcel(string filePath, DataTable dataTable)
    {
        var workbook = new XSSFWorkbook(); // .xlsx
        var sheet = workbook.CreateSheet("Sheet1");
        var headerRow = sheet.CreateRow(0);
        var headerCell = headerRow.CreateCell(0);
        headerCell.SetCellValue("Column1"); // set your header here
        var rowNum = 1;
        foreach (DataColumn column in dataTable.Columns)
        {
            var cell = headerRow.CreateCell(rowNum++);
            cell.SetCellValue(column.ColumnName);
        }
        rowNum = 1;
        foreach (DataRow row in dataTable.Rows)
        {
            var newRow = sheet.CreateRow(rowNum++);
            for (int i = 0; i < row.ItemArray.Length; i++)
            {
                var cell = newRow.CreateCell(i);
                cell.SetCellValue(row[i].ToString()); // set your value here                   
            }           
        }          
        using (FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
        {
            workbook.Write(stream);                  
        }           
    }   
}

这个帮助类提供了两个静态方法:ReadExcel和WriteToExcel。ReadExcel方法从Excel文件中读取数据并返回一个DataTable。WriteToExcel方法将DataTable中的数据写入到Excel文件中。注意,这个例子假设第一个工作表是你要读取或写入的工作表,并且假设第一行是标题行。你可能需要根据实际情况调整这些假设。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表