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#如何处理JSON

    当使用C#开发Web应用或其他需要使用API的系统时,通常需要处理JSON来交换数据。JSON是一种轻量级的数据格式,易于读写和解析。下面是一些使用C#处理JSON的方法。 第一步:导入Newtonsoft.Json库 使用C#处理JSON的其中一种方法是使用Newtonsoft.Json库,它是一个开源的JSON框架,可以方便地将JSON字符串解析为C#对…

    C# 2023年5月14日
    00
  • Unity实现俄罗斯方块(二)

    Unity实现俄罗斯方块(二)攻略 1. 前言 在上一篇文章《Unity实现俄罗斯方块(一)》中,我们实现了俄罗斯方块游戏的基本框架,包括生成指定形状的方块、方块下落、方块旋转、消行等基本功能。接下来,我们在这个基础上,继续实现俄罗斯方块游戏的其他功能,包括左右移动和加速下落。 下面,我们就一步一步来详细讲解如何实现这些功能。 2. 左右移动 在俄罗斯方块游…

    C# 2023年6月1日
    00
  • C# 基于NPOI操作Excel

    C#基于NPOI操作Excel 在C#中,我们可以使用NPOI操作Excel文件。NPOI是一个开源的.NET库,它提供了对Microsoft Office的读取和写入支持。在本文中,我们将介绍使用NPOI操作Excel的完整攻略。 安装NPOI 要使用NPOI,我们需要先安装它。我们可以通过NuGet安装NPOI。在Visual Studio中,依次打开”…

    C# 2023年5月31日
    00
  • Url相对路径的问题总结

    URL相对路径问题总结 在网页开发中,我们常常需要引用其他文件的资源,比如图片、CSS文件和JavaScript文件等等。而在标签属性中,我们可以写入文件的URL地址来引用这些资源。为了方便管理和维护,有时候我们会使用相对路径的方式来引用这些资源。但是相对路径也有可能出现问题,因此我们需要了解URL相对路径的问题,本文将对这个问题做出详细的解释。 问题描述 …

    C# 2023年5月31日
    00
  • LINQ基础之Join和UNION子句

    LINQ基础之Join和UNION子句 1. Join子句 Join子句用于将两个数据集合并为一个新的数据集。Join子句需要一个内部键和外部键,用于在两个数据集之间建立关联。 1.1 内部键和外部键 内部键和外部键是Join子句建立关联的基础。内部键是第一个数据集中用于建立关联的字段或属性,而外部键是第二个数据集中用于建立关联的字段或属性。这两个键必须具有…

    C# 2023年6月1日
    00
  • jquery实现pager控件示例

    jQuery是一个流行的JavaScript库,它可以帮助开发人员更轻松地操作HTML文档、处理事件和执行动画等。本文将介绍如何使用jQuery实现一个分页控件,以便在Web应用程序中显示大量数据。 实现分页控件 以下是使用jQuery实现分页控件的步骤: 步骤1:创建HTML结构 首先,我们需要创建一个HTML结构来显示分页控件。以下是一个基本的HTML结…

    C# 2023年5月15日
    00
  • 重温C# clr 笔记总结

    重温C# clr笔记总结攻略 1. 了解C#和clr的基本概念 C#是一种现代化的编程语言,而CLR是一种公共语言运行时环境,即Common Language Runtime。了解这两个基本概念,对于深入学习C#语言和如何使用它来构建.NET应用程序至关重要。 2. 熟悉C#和CLR的核心特点 C#和CLR有许多核心特点。这些特点对于掌握C#开发非常重要。例…

    C# 2023年5月15日
    00
  • C#微信开发之发送模板消息

    C#微信开发之发送模板消息完整攻略 概述 微信模板消息是一种微信提供的消息推送方式,可以让开发者向用户主动发送重要信息,如订单状态变更、交易成功、活动通知等。本文将介绍如何在C#中使用微信公众号(WeChat Official Account)的API发送模板消息,包括准备工作、代码实现和注意事项。 准备工作 获得微信公众号的appid和appsecret,…

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