C#使用NPOI导入Excel的方法详解

下面详细讲解“C#使用NPOI导入Excel的方法详解”的完整攻略。

安装NPOI

要使用NPOI,需要先安装它。可以通过NuGet包管理器搜索和安装NPOI。

导入Excel的方法

  1. 首先,需要先读取Excel文件。可以使用NPOI中的HSSFWorkbookXSSFWorkbook类来打开Excel文件。
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;

// 读取Excel文件
var hssfworkbook = new HSSFWorkbook(File.OpenRead(@"C:\example.xls"));
var xssfworkbook = new XSSFWorkbook(File.OpenRead(@"C:\example.xlsx"));
  1. 接下来,需要获取要导入的工作表。可以通过GetSheet()方法来获取工作表,其中参数为工作表的名称或索引。
// 获取工作表
var hssfSheet = hssfworkbook.GetSheet("Sheet1");
var xssfSheet = xssfworkbook.GetSheetAt(0); // 获取第一个工作表
  1. 获取工作表中的行和单元格。可以通过GetRow()方法来获取行,需要指定行号;可以通过GetCell()方法来获取单元格,需要指定单元格所在的行和列。
// 获取行和单元格
var hssfRow = hssfSheet.GetRow(0);
var xssfRow = xssfSheet.GetRow(0);
var hssfCell = hssfRow.GetCell(0);
var xssfCell = xssfRow.GetCell(0);
  1. 获取单元格中的数据。可以通过CellType属性获取数据类型,然后根据数据类型调用相应的方法来获取数据。如:GetNumericCellValue()方法获取数字类型数据,GetStringCellValue()方法获取字符串类型数据等。
// 获取单元格中的数据
var hssfCellValue = (hssfCell.CellType == CellType.Numeric) ? hssfCell.NumericCellValue.ToString() : hssfCell.StringCellValue;
var xssfCellValue = (xssfCell.CellType == CellType.Numeric) ? xssfCell.NumericCellValue.ToString() : xssfCell.StringCellValue;
  1. 遍历整个工作表,获取所有数据。可以先通过GetRowEnumerator()方法获取所有行的枚举器,然后遍历每一行,再遍历每一列,获取单元格中的数据。
// 获取所有数据
var hssfEnumerator = hssfSheet.GetRowEnumerator();
while (hssfEnumerator.MoveNext())
{
    var row = (HSSFRow)hssfEnumerator.Current;
    for (var i = 0; i < row.LastCellNum; i++)
    {
        var cell = row.GetCell(i);
        var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
        Console.WriteLine(cellValue);
    }
}

以上就是使用NPOI导入Excel的方法详解,下面附上两条示例。

示例1

下面是一个简单的示例,演示如何读取Excel文件中的所有数据并展示在控制台上。

using System;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;

namespace ExcelImport
{
    class Program
    {
        static void Main(string[] args)
        {
            // 读取Excel文件
            var hssfworkbook = new HSSFWorkbook(File.OpenRead(@"C:\example.xls"));
            var xssfworkbook = new XSSFWorkbook(File.OpenRead(@"C:\example.xlsx"));

            // 获取工作表
            var hssfSheet = hssfworkbook.GetSheet("Sheet1");
            var xssfSheet = xssfworkbook.GetSheetAt(0); // 获取第一个工作表

            // 获取所有数据
            var hssfEnumerator = hssfSheet.GetRowEnumerator();
            while (hssfEnumerator.MoveNext())
            {
                var row = (HSSFRow)hssfEnumerator.Current;
                for (var i = 0; i < row.LastCellNum; i++)
                {
                    var cell = row.GetCell(i);
                    var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
                    Console.WriteLine(cellValue);
                }
            }

            var xssfEnumerator = xssfSheet.GetRowEnumerator();
            while (xssfEnumerator.MoveNext())
            {
                var row = (XSSFRow)xssfEnumerator.Current;
                for (var i = 0; i < row.LastCellNum; i++)
                {
                    var cell = row.GetCell(i);
                    var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
                    Console.WriteLine(cellValue);
                }
            }
        }
    }
}

示例2

下面是另一个示例,演示如何读取Excel文件中指定列的数据并保存到数组中。

using System;
using System.Collections.Generic;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;

namespace ExcelImport
{
    class Program
    {
        static void Main(string[] args)
        {
            // 读取Excel文件
            var hssfworkbook = new HSSFWorkbook(File.OpenRead(@"C:\example.xls"));
            var xssfworkbook = new XSSFWorkbook(File.OpenRead(@"C:\example.xlsx"));

            // 获取工作表
            var hssfSheet = hssfworkbook.GetSheet("Sheet1");
            var xssfSheet = xssfworkbook.GetSheetAt(0); // 获取第一个工作表

            // 获取指定列的数据
            var hssfList = new List<string>();
            var xssfList = new List<string>();

            var hssfEnumerator = hssfSheet.GetRowEnumerator();
            while (hssfEnumerator.MoveNext())
            {
                var row = (HSSFRow)hssfEnumerator.Current;
                var cell = row.GetCell(0);
                var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
                hssfList.Add(cellValue);
            }

            var xssfEnumerator = xssfSheet.GetRowEnumerator();
            while (xssfEnumerator.MoveNext())
            {
                var row = (XSSFRow)xssfEnumerator.Current;
                var cell = row.GetCell(0);
                var cellValue = (cell.CellType == CellType.Numeric) ? cell.NumericCellValue.ToString() : cell.StringCellValue;
                xssfList.Add(cellValue);
            }

            // 输出结果
            Console.WriteLine("HSSF:");
            foreach (var item in hssfList)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("XSSF:");
            foreach (var item in xssfList)
            {
                Console.WriteLine(item);
            }
        }
    }
}

以上就是示例说明,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用NPOI导入Excel的方法详解 - Python技术站

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

相关文章

  • C#关于Task.Yeild()函数的讨论

    当我们使用异步编程模型时,Task类就成了我们常用的工具之一。而Task.Yield()方法也是Task类中的一个重要成员,其可以帮助我们优化程序性能并且提高并发的效率。接下来,我将为大家讲解C#关于Task.Yield()函数的讨论,内容如下: 什么是Task.Yield()函数 Task.Yield()是Task类中的一个静态方法,其作用是暂停当前线程的…

    C# 2023年6月1日
    00
  • C#实现二叉查找树

    C#实现二叉查找树 什么是二叉查找树 二叉查找树(Binary Search Tree)也称为二叉搜索树,简称BST。它是一种基于二分查找思想的非线性数据结构,由多个节点组成,每个节点包含一个键值,同时有两个指针分别指向左右子节点,满足以下性质: 左子树上所有节点的键值小于它的根节点的键值。 右子树上所有节点的键值大于它的根节点的键值。 左右子树也必须是二叉…

    C# 2023年6月8日
    00
  • C# String.Split()方法: 按指定的分隔符将字符串分成一个字符串数组

    String.Split()方法是C#中用于将字符串按照指定的字符或字符串分割成子字符串的方法。具体来说,Split()方法会根据指定的分隔符将原字符串分割成多个子字符串,并返回一个字符串类型的数组,数组中的每个元素都是一个分割后的子字符串。 Split()方法有多种重载形式,下面分别介绍常用的两个重载形式。 1. Split(char[] separato…

    C# 2023年4月19日
    00
  • ASP.NET Core MVC 从入门到精通之序列化

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启…

    C# 2023年5月8日
    00
  • 基于WPF实现步骤控件的示例代码

    接下来我将详细讲解如何基于WPF实现步骤控件的示例代码。 什么是步骤控件 步骤控件常用于引导用户完成多步操作的过程,通常由一组步骤组成,每个步骤都包含了一个标题和内容。用户可以根据提示完成当前步骤的操作,然后进入下一步骤。 示例代码攻略 步骤一:创建控件 首先,我们需要创建一个WPF控件来实现步骤控件的功能。我们可以使用ItemsControl控件,并对其进…

    C# 2023年6月7日
    00
  • .net中前台javascript与后台c#函数相互调用问题

    在.NET开发中,我们经常需要在前台JavaScript中调用后台C#函数或者从后台C#函数里面操作前台JavaScript,下面我将提供几种方法供参考。 方法一:在前台JavaScript中调用后台C#函数 方式一:使用PageMethods PageMethods是.NET 2.0中提供的一个在前端页面中调用后端方法的机制。可以通过添加 System.W…

    C# 2023年5月31日
    00
  • Winform项目中TextBox控件DataBindings属性

    详细讲解Winform项目中TextBox控件DataBindings属性的完整攻略,包括以下几点: DataBindings属性是什么? 如何使用DataBindings属性绑定数据? 示例说明 1. DataBindings属性是什么? DataBindings是Winform中常用的一个属性,可以将控件和数据进行绑定。使用DataBindings属性可…

    C# 2023年5月31日
    00
  • C#微信公众号开发之服务器配置

    C#微信公众号开发之服务器配置 本文主要介绍在使用C#进行微信公众号开发过程中,如何进行服务器配置,以让公众号接收用户消息和事件以及进行回复。下面就是服务器配置的完整攻略: 1. 登录开发者平台 首先,在微信公众平台官网登录自己的开发者账号,然后进入“开发->基本配置”界面,在该界面获取自己的AppID和AppSecret,为后面进行开发提供必要的认证…

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