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#调用jar包的方法步骤(非常详细)

    下面是使用C#调用Java jar包的完整攻略,步骤如下: 步骤一:安装JDK 首先需要安装JDK(Java开发工具包),在JDK中包含了Java的运行环境和开发工具,以及Java SE Development Kit中的运行环境(JRE)的副本。稍后的步骤需要使用到JDK中自带的工具。 步骤二:创建Java项目并打包 在此步骤中,需要使用Java语言编写代…

    C# 2023年5月15日
    00
  • WPF+SkiaSharp实现自绘弹幕效果

    下面是”WPF+SkiaSharp实现自绘弹幕效果”的完整攻略: 简介 WPF(Windows Presentation Foundation)是一个用于创建Windows桌面应用程序的技术,它提供了大量的视觉效果和控件,使得开发者可以快速地构建出富有表现力的用户界面。SkiaSharp是由Google开发的一个跨平台的2D图形渲染引擎,它可以实现在不同平台…

    C# 2023年6月6日
    00
  • c# 文件压缩zip或将zip文件解压的方法

    请看下面的详细讲解: 1. c# 文件压缩zip的方法 1.1 引用System.IO.Compression和System.IO.Compression.FileSystem命名空间 using System.IO.Compression; using System.IO.Compression.FileSystem; 1.2 创建压缩文件方法 // 压缩…

    C# 2023年6月1日
    00
  • 解决Unity无限滚动复用列表的问题

    当使用 Unity 开发游戏时,经常需要在游戏中使用列表来显示大量信息。而为了优化性能,我们通常会使用无限滚动复用列表。但是,在实现无限滚动复用列表时,可能会遇到以下这些问题: 在滚动列表时,出现卡顿情况。 在滚动列表时,列表中的元素出现重复或错位现象。 在滚动到列表底部时,无法加载新的元素。 这些问题的出现是由于滚动列表的过程中,我们会涉及到对象池、缓存、…

    C# 2023年6月3日
    00
  • ASP.NET MVC实现本地化和全球化

    以下是ASP.NET MVC实现本地化和全球化的完整攻略,包含两个示例: 什么是本地化和全球化 本地化是指将应用程序适应不同语言和文化。全球化是指将Web应用程序适应不同的地区和文化。本地化全球化是Web应用程序开发中非常重要的一部分,它们可以帮助我们更好地服务于全球用户。 如实现本地化和全球化 在ASP.NET MVC中,我们可以使用资源文件和区域设置来实…

    C# 2023年5月12日
    00
  • 一文带你吃透C#中面向对象的相关知识

    一文带你吃透C#中面向对象的相关知识 什么是面向对象 面向对象编程是一种编程方法和思想,它的核心是将事物抽象为对象,并通过对象之间的交互来完成任务。在C#中,一切皆为对象,包括类和结构体等用户定义的类型,以及基本类型如int,float等。 类与对象 类是创建对象的模板,它定义了对象的属性和方法。对象是类的实例,它是内存中分配的一块区域,可以存储类的属性值。…

    C# 2023年5月14日
    00
  • C#中backgroundworker的使用教程

    下面是“C#中BackgroundWorker的使用教程”的完整攻略。 背景 BackgroundWorker是C#中常用于执行后台任务的组件,它可以执行不会阻塞UI线程的耗时操作,并在操作完成后返回结果。这个组件非常适合处理长时间运行的操作,例如读取、写入文件或进行网络通信等。 BackgroundWorker的基本用法 实例化BackgroundWork…

    C# 2023年6月7日
    00
  • C# 中对象序列化XML的方法

    C# 中对象序列化 XML 方法概述 C# 中对象序列化 XML 的方法可以将对象以 XML 文件的形式序列化并保存在磁盘上,也可以将 XML 文件反序列化成对象。这种方法可以方便地在不同的系统之间传输数据,并且保留了对象的结构和属性。C# 中对象序列化 XML 的方法主要有以下两种: 使用 XmlSerializer 类进行序列化和反序列化。 使用 Dat…

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