C#读取Excel的几种方法详解

Excel是一个非常常见的工作软件,我们在日常生活中难免要接触到它。而C#作为一种常用的编程语言,也经常需要与Excel进行交互。在本篇文章中,我们将从多个方面结合代码来详细介绍C#读取Excel的几种方法,便于大家在实际工作中使用。

一、使用Microsoft.Office.Interop.Excel

使用Microsoft.Office.Interop.Excel是最常见的方法之一,它可以帮助我们直接读取和操作Excel文件。我们需要引用Microsoft.Office.Interop.Excel的COM组件,并添加一些命名空间后,便可以使用相关的类和方法。下面是一个示例代码:

using Excel = Microsoft.Office.Interop.Excel;

public void ReadExcel(string filePath)
{
    Excel.Application excelApp = new Excel.Application();
    Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
    Excel.Worksheet worksheet = workbook.Sheets[1];
    Excel.Range range = worksheet.UsedRange;

    // 读取每一行每一列的数据
    for (int row = 1; row <= range.Rows.Count; row++)
    {
        for (int col = 1; col <= range.Columns.Count; col++)
        {
            string cellValue = range.Cells[row, col].Value.ToString();
            Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, cellValue);
        }
    }

    workbook.Close();
    excelApp.Quit();
}

在这个示例中,我们通过Excel.Application对象创建了一个Excel应用程序实例,并使用它打开了一个指定路径下的Excel文件。然后,我们选择了Excel文件中的第一个工作表,并使用UsedRange属性获取了它的数据区域。最后,我们通过两个for循环依次遍历每一行每一列,读取相应的单元格的值,并输出到控制台。

二、使用OleDbConnection

OleDbConnection也是常用的一种读取Excel文件的方法。这个方法使用了OLE DB技术,可以通过一些简单的代码就可以实现数据的读取。下面是示例代码:

using System.Data.OleDb;

public void ReadExcel(string filePath)
{
    string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
    using (OleDbConnection conn = new OleDbConnection(connString))
    {
        conn.Open();
        OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", conn);
        OleDbDataReader reader = command.ExecuteReader();

        // 读取每一行每一列的数据
        while (reader.Read())
        {
            for (int i = 0; i < reader.FieldCount; i++)
            {
                Console.WriteLine(reader[i]);
            }
        }
    }
}

在这个示例中,我们首先创建了一个连接到Excel文件的连接字符串,然后使用OleDbConnection对象连接到该文件。接着,我们使用SQL语句“SELECT * FROM [Sheet1$]”读取第一个工作表中的全部数据,得到一个OleDbDataReader对象。最后,我们通过一个while循环遍历每一行,并通过for循环遍历每一列,分别输出到控制台。

三、使用EPPlus

EPPlus是一个第三方的开源库,专门用于读写Excel文件,比较适合用于大数据量Excel文件的读写操作。下面是一个使用EPPlus读取Excel文件并输出其内容的示例代码:

using OfficeOpenXml;

public void ReadExcel(string filePath)
{
    using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath)))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets[1];

        // 读取每一行每一列的数据
        for (int row = worksheet.Dimension.Start.Row; row <= worksheet.Dimension.End.Row; row++)
        {
            for (int col = worksheet.Dimension.Start.Column; col <= worksheet.Dimension.End.Column; col++)
            {
                object cellValue = worksheet.Cells[row, col].Value;
                if (cellValue != null)
                {
                    Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, cellValue.ToString());
                }
            }
        }
    }
}

在这个示例中,我们首先使用ExcelPackage打开指定路径下的Excel文件。然后,我们选择了Excel文件中的第一个工作表,并使用Dimension属性获取了它的真实数据区域。最后,我们通过两个for循环依次遍历每一行每一列,读取相应的单元格的值,并输出到控制台。

四、使用NPOI

NPOI是一个开源的.NET类库,可以用于读写Microsoft Office系列的文件,包括Excel。NPOI相对于Microsoft.Office.Interop.Excel和OleDbConnection的优势在于,它可以在未安装Excel的系统中使用,并且文件大小的限制较小。下面是一个使用NPOI读取Excel文件的示例代码:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

public void ReadExcel(string filePath)
{
    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        IWorkbook workbook = new XSSFWorkbook(fs);
        ISheet worksheet = workbook.GetSheetAt(0);

        // 读取每一行每一列的数据
        for (int row = 0; row <= worksheet.LastRowNum; row++)
        {
            IRow currentRow = worksheet.GetRow(row);
            for (int col = 0; col < currentRow.LastCellNum; col++)
            {
                ICell currentCell = currentRow.GetCell(col);
                if (currentCell != null)
                {
                    string cellValue = currentCell.ToString();
                    Console.WriteLine("第{0}行第{1}列的值:{2}", row + 1, col + 1, cellValue);
                }
            }
        }
    }
}

在这个示例中,我们首先使用FileStream打开指定路径下的Excel文件。然后,我们使用XSSFWorkbook和ISheet对象分别表示整个Excel文件和它的第一个工作表。接着,我们通过两个for循环依次遍历每一行每一列,读取相应的单元格的值,并输出到控制台。

五、使用Spire.XLS

Spire.XLS是另一个免费的.NET类库,用于读写Excel文件。使用它可以快速读取和操作Excel文件,并支持大多数Excel功能。下面是一个使用Spire.XLS读取Excel文件的示例代码:

using Spire.Xls;

public void ReadExcel(string filePath)
{
    Workbook workbook = new Workbook();
    workbook.LoadFromFile(filePath);
    Worksheet worksheet = workbook.Worksheets[0];

    // 读取每一行每一列的数据
    for (int row = 1; row <= worksheet.LastRow; row++)
    {
        for (int col = 1; col <= worksheet.LastColumn; col++)
        {
            CellRange range = worksheet[row, col];
            if (range.Value != null)
            {
                Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, range.Value);
            }
        }
    }
}

在这个示例中,我们首先使用WorkBook打开指定路径下的Excel文件。然后,我们选择了Excel文件中的第一个工作表,并使用LastRow和LastColumn属性获取它的真实数据区域。最后,我们通过两个for循环依次遍历每一行每一列,读取相应的单元格的值,并输出到控制台。

总结

通过上述的几个示例代码,我们可以看到使用C#读取Excel文件有多种方法,其中Microsoft.Office.Interop.Excel和OleDbConnection比较常见但需要安装Excel,EPPlus适用于大数据量Excel文件的读写操作,NPOI可以在未安装Excel的系统中使用,Spire.XLS支持大多数Excel功能。读者可以根据自己的实际需求选择最合适的方法。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/303347.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相关推荐

  • 为什么不能用Microsoft Excel进行Python编程?

    Microsoft Excel是一个广泛使用的数据分析工具,但是它不能直接用于Python编程。这是因为Microsoft Excel并不是一个编程工具,它的主要功能是进行数据处理…

    编程 2025-04-29
  • 基尼系数Excel计算模板

    这篇文章将介绍基尼系数Excel计算模板,为大家详细阐述如何使用Excel进行基尼系数的计算。 一、模板下载及导入 首先需要下载基尼系数的Excel计算模板,可以在Excel中通过…

    编程 2025-04-28
  • 使用ReoGrid操作Excel的WPf应用

    本文将详细阐述如何使用ReoGrid来操作Excel,重点介绍在WPF应用程序中使用ReoGrid的方法及注意点。 一、ReoGrid简介 ReoGrid是一个基于.NET的开源组…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25

发表回复

登录后才能评论