WinForm项目开发中NPOI用法实例解析

WinForm项目开发中NPOI用法实例解析

在WinForm项目开发过程中,Excel文件的读写是一个常见的需求。NPOI是一个.NET下的开放源代码Excel读写库,可以很好地实现WinForm应用中Excel文件的读取和写入,下面是NPOI用法的实例解析。

步骤1:引用NPOI库

NPOI库可以从NuGet上引用或者在官网上下载后手动添加。如果使用NuGet引用,需要在NuGet Manager中搜索NPOI并安装;如果手动添加,在项目中添加对NPOI的引用即可。

步骤2:读取Excel文件

using System.IO;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

// 读取Excel文件中的数据,并返回List<List<Obj>>格式的结果
public static List<List<Object>> ReadExcel(string path)
{
    List<List<Object>> result = new List<List<Object>>();
    IWorkbook workbook;
    using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
    {
        workbook = new XSSFWorkbook(stream); // 读取xlsx文件
    }
    ISheet sheet = workbook.GetSheetAt(0); // 读取第一个sheet
    int rowNum = sheet.LastRowNum + 1; // 总行数
    for (int i = 0; i < rowNum; i++)
    {
        IRow row = sheet.GetRow(i);
        List<Object> rowObj = new List<Object>();
        for (int j = 0; j < row.LastCellNum; j++)
        {
            ICell cell = row.GetCell(j);
            rowObj.Add(cell.ToString());
        }
        result.Add(rowObj);
    }
    return result;
}

上述代码将一个Excel文件读取后转换为一个List>格式的结果,每一个子列表代表一行数据,包含多个列的数据项。

步骤3:写入Excel文件

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;

// 将数据写入到Excel文件中
public static void WriteExcel(string path,List<List<Object>> datas)
{
    IWorkbook workbook = new XSSFWorkbook();
    ISheet sheet = workbook.CreateSheet("Sheet1"); // 创建一个Sheet
    for(int i=0;i<datas.Count;i++) // 循环行
    {
        IRow row = sheet.CreateRow(i); // 创建行对象
        List<Object> rowData = datas[i];
        for(int j=0;j<rowData.Count;j++) // 循环列
        {
            ICell cell = row.CreateCell(j); // 创建列对象
            object cellData = rowData[j]; // 获取数据
            if(cellData is string) // 如果是字符串,直接填充
            {
                cell.SetCellValue(cellData.ToString());
            }
            else if(cellData is double) // 如果是数字,填充数字
            {
                cell.SetCellValue((double)cellData);
            }
            // 更多类型可按需扩展
        }
    }
    using(FileStream stream = new FileStream(path,FileMode.Create,FileAccess.Write))
    {
        workbook.Write(stream); // 将workbook的数据写入到文件中
    }
}

上述代码将一个List>格式的数据写入到一个Excel文件中,每个子列表代表一行数据,包含多个列的数据项。

示例1:读取Excel文件、显示到DataGridView中

private void button1_Click(object sender, EventArgs e)
{
    string path = @"test.xlsx"; // Excel文件路径
    List<List<Object>> datas = ExcelHelper.ReadExcel(path);
    dataGridView1.DataSource = datas; // 将数据显示到DataGridView中
}

上述代码在点击button1的时候,读取了Excel文件的内容,将结果展示到了DataGridView控件中。

示例2:写入Excel文件、使用Process.Start打开

private void button2_Click(object sender, EventArgs e)
{
    List<List<Object>> datas = new List<List<Object>>(); // 待写入的数据
    for(int i=0;i<10;i++)
    {
        List<Object> rowData = new List<Object>();
        for(int j=0;j<10;j++)
        {
            rowData.Add(i*j);
        }
        datas.Add(rowData);
    }
    string path = @"test2.xlsx"; // Excel文件保存路径
    ExcelHelper.WriteExcel(path, datas); // 写入Excel文件
    System.Diagnostics.Process.Start(path); // 打开Excel
}

上述代码创建了一个10行10列的二维数据,将数据写入Excel文件中,然后使用Process.Start打开文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:WinForm项目开发中NPOI用法实例解析 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#聊天程序服务端与客户端完整实例代码

    下面我将为您详细讲解“C#聊天程序服务端与客户端完整实例代码”的完整攻略。 关于“C#聊天程序服务端与客户端完整实例代码” 这是一篇介绍如何使用C#语言实现聊天程序的完整攻略。其中包括服务端和客户端的完整代码。 服务端使用C#语言实现,使用TCP协议进行通信。并且,服务端为多线程模型,能够同时处理多个客户端连接请求。 客户端使用C#语言实现,可以与服务端建立…

    C# 2023年6月7日
    00
  • ASP.NET Core 数据保护(Data Protection)上篇

    ASP.NET Core 数据保护(Data Protection)是一种用于保护数据的框架,它提供了一种简单的方法来加密和解密数据。本攻略将深入探讨ASP.NET Core 数据保护的实现,并提供两个示例说明。 1. 数据保护的基本原理 ASP.NET Core 数据保护的基本原理是使用密钥来加密和解密数据。密钥可以是对称密钥或非对称密钥。对称密钥是一种加…

    C# 2023年5月17日
    00
  • C#比较二个数组并找出相同或不同元素的方法

    针对“C#比较二个数组并找出相同或不同元素的方法”的完整攻略,以下是具体步骤: 步骤一:创建两个数组 首先,我们需要创建两个数组,来保存要进行比较的数据。可以使用 int[] 或者 string[] 等类型,以下是示例代码: int[] arr1 = new int[] {1, 2, 3, 4, 5}; int[] arr2 = new int[] {3, …

    C# 2023年6月7日
    00
  • C#中一个高性能异步socket封装库的实现思路分享

    C#中一个高性能异步Socket封装库的实现思路分享 在实现高性能异步Socket封装库时,我们可以采用以下步骤: 步骤一:创建Socket 在使用Socket进行网络通信之前,我们需要创建一个Socket实例。可以使用以下代码创建一个Socket: Socket socket = new Socket(SocketType.Stream, Protocol…

    C# 2023年5月15日
    00
  • 使用C#开发ActiveX控件

    使用C#开发ActiveX控件 简介 ActiveX控件是一种非常通用的组件技术,它可以被其它程序(包括浏览器和其他应用程序)调用和控制。一些不支持COM技术的语言(比如Java)可以通过使用ActiveX控件来调用Windows API。本文将介绍如何使用C#语言来开发ActiveX控件,以及如何将其嵌入到HTML页面中,供浏览器或者其他应用程序调用。 开…

    C# 2023年6月7日
    00
  • ASP.NET Core模仿中间件方式实现列表过滤功能

    ASP.NET Core模仿中间件方式实现列表过滤功能攻略 在ASP.NET Core中,可以使用中间件来实现列表过滤功能。本攻略将提供详细的步骤和示例说明,演示如何在ASP.NET Core中实现列表过滤功能。 步骤 步骤1:创建一个新的ASP.NET Core Web应用程序 首先,需要创建一个新的ASP.NET Core Web应用程序。可以使用以下命…

    C# 2023年5月17日
    00
  • .NET Core中使用Redis与Memcached的序列化问题详析

    .NET Core 中使用 Redis 与 Memcached 的序列化问题详析 在 .NET Core 中,Redis 和 Memcached 是两个非常流行的缓存解决方案。在使用 Redis 和 Memcached 时,序列化是一个非常重要的问题。本攻略将详细介绍在 .NET Core 中使用 Redis 和 Memcached 时的序列化问题,并提供多…

    C# 2023年5月17日
    00
  • 如何在Asp.Net Core中集成Refit

    Asp.Net Core中集成Refit攻略 Refit是一个开源的RESTful API客户端库,它可以帮助我们轻松地使用C#来访问Web API。在Asp.Net Core中,我们可以使用Refit来简化Web API的调用。本攻略将介绍如何在Asp.Net Core中集成Refit。 步骤 以下是在Asp.Net Core中集成Refit的步骤: 安装…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部