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#中多态现象和多态的实现方法”的攻略。 什么是多态? 多态,英文名为Polymorphism,是指在面向对象编程中,同一种行为表现出不同的形态和用途,也是一种很强大的面向对象编程特性。 在实际应用中,多态通常指的是一个变量(或参数、返回值等)能够具有多种类型,且能够根据不同的类型而呈现出多种不同的行为的能力,这种能力通常是通过继承、重载…

    C# 2023年6月7日
    00
  • asp.net core下给网站做安全设置的方法详解

    ASP.NET Core 下给网站做安全设置的方法详解 在 ASP.NET Core 中,我们可以通过一些安全设置来保护我们的网站免受攻击。本攻略将介绍 ASP.NET Core 下给网站做安全设置的方法。 步骤 以下是在 ASP.NET Core 中给网站做安全设置的步骤: 使用 HTTPS 使用 HTTPS 可以保护我们的网站免受中间人攻击。我们可以在 …

    C# 2023年5月17日
    00
  • 使用chrome控制台作为.Net的日志查看器

    使用 Chrome 控制台作为 .NET 的日志查看器攻略 在 .NET 应用程序中,可以使用 Chrome 控制台作为日志查看器。本攻略将介绍如何使用 Chrome 控制台作为 .NET 的日志查看器。 步骤 步骤1:安装 Serilog 首先,我们需要安装 Serilog。Serilog 是一个 .NET 日志库,可以将日志输出到多个目标,包括控制台、文…

    C# 2023年5月17日
    00
  • 详解C#中delegate/event/EventHandler/Action/Func的使用和区别

    详解C#中delegate/event/EventHandler/Action/Func的使用和区别 在C#中,delegate、event、EventHandler、Action和Func都是用来处理委托(delegate)的。虽然它们的作用都相似,但是它们之间有一些区别,本篇文章将对这些区别进行详细解释。 delegate和event的基础知识 dele…

    C# 2023年5月15日
    00
  • 符合标准的js对联广告

    下面是关于“符合标准的js对联广告”的完整攻略。 什么是对联广告 对联广告是网站广告形式之一,通常出现在网页的左右两侧。对联广告通常由两个广告单元组成,它们在同一水平线上,并且左右相对称。 什么是符合标准的js对联广告 符合标准的js对联广告需要满足以下要求: 左右两侧的广告单元大小要相等。 广告单元要在同一水平线上。 左右两侧的广告单元需要有统一的div …

    C# 2023年5月31日
    00
  • C#基础之异步调用实例教程

    C#基础之异步调用实例教程 本篇教程旨在介绍基于C#异步调用相关知识的实例,帮助初学者了解如何利用异步调用提高程序的并发处理能力和性能。 异步调用的概念和优势 异步调用的核心是多线程并发处理。在进行某些耗时操作时,使用异步调用可以使主线程不需要等待操作完成,而可以继续执行其他操作。一般来说,异步调用可优化的操作包括网络请求、数据库请求、文件读写等等。 异步调…

    C# 2023年6月7日
    00
  • C#序列化与反序列化实例

    让我来为你详细讲解C#序列化与反序列化实例的完整攻略。 什么是C#序列化与反序列化? C#序列化与反序列化是指将C#的对象序列化成二进制字节流,并将其存储在磁盘或通过网络发送到其他计算机,同时,反序列化是指反过来将二进制字节流反序列化为C#对象。这样做的好处是可以方便地将对象跨平台传输和存储。 如何实现C#序列化与反序列化? C#提供了两种序列化方式:二进制…

    C# 2023年6月1日
    00
  • C#实现跑马灯效果的示例代码

    让我们来详细讲解如何使用 C# 实现跑马灯效果的示例代码。 1. 创建 WinForm 应用 首先,我们需要创建一个 WinForm 应用,在 Visual Studio 中选择 File -> New -> Project,然后选择 Windows Forms App (.NET Framework)。在弹出的窗口中,我们可以输入项目的名称并选…

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