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# 判断给定大数是否为质数的详解 判断一个大数是否为质数是一个常见的问题。早期的解决方式是通过试除法,即将该数不断除以比它小的所有正整数,如果在这些正整数中存在约数,那么这个数就不是质数。 但是,这种试除法效率极低,在判断大数时会消耗大量时间和资源。因此,我们需要更快速且高效的方式来判断大数是否为质数。 下面我们将介绍一种使用“Miller-Rabin…

    C# 2023年6月7日
    00
  • C#实现语音视频录制-附demo源码

    标题:C#实现语音视频录制-附demo源码完整攻略 简介 本攻略旨在介绍如何使用C#实现语音视频录制的方法,并提供示例代码。该方法基于NAudio和AForge库,可以在Windows系统中实现对声音和视频的录制,并支持保存为MP4格式。 步骤 下载并安装NAudio和AForge库。 在项目中引用这两个库。 添加代码: private void Start…

    C# 2023年6月6日
    00
  • C#实现Windows Form调用R进行绘图与显示的方法

    下面我将为您详细讲解“C#实现WindowsForm调用R进行绘图与显示的方法”的完整攻略。本攻略将分为以下几个步骤: 安装R语言环境和R.Net库 在使用C#调用R前,需要先安装R语言环境和R.Net库。可以在R官网(https://www.r-project.org/)下载最新版本的R语言环境,并在控制台中安装R.Net库。R.Net库可以通过NuGet…

    C# 2023年5月15日
    00
  • 理解C#中的枚举(简明易懂)

    理解C#中的枚举(简明易懂) 在C#中,枚举是一种非常有效的机制来表示一组具有固定数量的离散值。本文将介绍在C#中使用枚举的概念、语法和示例。 概念 枚举是一个具有几个命名常量的数据类型。它是由相同类型的常量值组成的自定义数据类型。使用枚举可以增加代码的可读性,使代码更加容易维护和理解。 枚举的优点 使用枚举可以使代码更加自然。比如在我们日常生活中,一个星期…

    C# 2023年5月31日
    00
  • ASP.NET Core缓存静态资源示例详解

    ASP.NET Core缓存静态资源示例详解 在ASP.NET Core应用程序中,缓存静态资源可以提高应用程序的性能和响应速度。本攻略将介绍如何在ASP.NET Core应用程序中缓存静态资源。 步骤 以下是在ASP.NET Core应用程序中缓存静态资源的步骤: 安装Microsoft.AspNetCore.StaticFiles包。 在ASP.NET …

    C# 2023年5月17日
    00
  • 使用C#实现在屏幕上画图效果的代码实例

    下面是使用C#实现在屏幕上画图效果的完整攻略。 目录 准备工作 绘制线段 绘制多边形 示例说明一:绘制简单的三角形 示例说明二:绘制带填充的矩形 准备工作 在C#中,我们可以通过System.Drawing命名空间下的Graphics类来实现在屏幕上的画图效果。在使用之前,需要进行如下准备工作: 引用命名空间 using System.Drawing; 创建…

    C# 2023年6月6日
    00
  • 如何使用Dapper处理多个结果集与多重映射实例教程

    下面是详细的攻略: 什么是Dapper? Dapper是一个开源的、轻量级的ORM(对象关系映射)框架,它是StackExchange出品的,具有高性能、易用等特点。它适用于多种数据库,并且可以从NuGet中轻松获取到。 处理多个结果集 在Dapper中处理多个结果集的方法很简单,只需在Query方法中传入一个参数splitOn即可。 假设我们的数据库中有两…

    C# 2023年6月6日
    00
  • C#知识整理

    C#知识整理攻略 一、概述 学习C#语言需要扎实的基础知识,包括数据类型、变量、运算符、控制结构和函数等。接下来,我们将按照主题对C#知识进行整理。同时,我们也会提供一些实际的示例代码帮助大家更好地理解学习C#。 二、数据类型 C#中的数据类型包括整型、浮点型、布尔型和字符型等, 对于每个类型来说,都有其对应的取值范围和存储大小。具体内容介绍如下: 1. 整…

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