您的位置:

用Excel Data Reader轻松读取Excel数据

Excel是一个普遍被使用的电子表格应用程序,很多项目中都需要处理Excel文件中的数据。在.NET应用程序中,读取Excel文件需要使用一些第三方组件,例如Excel Data Reader组件。在这篇文章中,我们将介绍如何使用Excel Data Reader轻松读取Excel数据。

一、安装Excel Data Reader

Excel Data Reader可以通过NuGet包管理器安装。

Install-Package ExcelDataReader

安装完成后,需要在程序中添加对ExcelDataReader和ExcelDataReader.DataSetExtensions的引用。

using ExcelDataReader;
using System.Data;

二、读取数据

使用Excel Data Reader读取Excel文件,需要在代码中创建一个ExcelReader对象并打开Excel文件。

//打开Excel文件
using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        //读取数据表
        var result = reader.AsDataSet();
    }
}

这段代码将打开Excel文件并将其读入DataSet。读取到的数据会以DataTable的形式存在DataSet中。可以使用以下代码将DataTable中的数据读取出来:

foreach (DataTable table in result.Tables)
{
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            //遍历DataTable中的每个单元格
            var value = row[column].ToString();
        }
    }
}

三、读取特定的Excel表格

Excel文件可能包含多个表格,如果只需要读取其中一个表格,可以在创建ExcelReader时指定表格的名称或索引。

using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        //读取名为Sheet1的表格
        var result = reader.AsDataSet(new ExcelDataSetConfiguration()
        {
            ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
            {
                UseHeaderRow = true
            }
        });

        var table = result.Tables["Sheet1"];
    }
}

这段代码将读取Excel文件中名为Sheet1的表格,并将其读取到DataTable中。

四、读取特定的列

如果只需要读取特定的列,可以在读取DataTable时只选择需要的列。

using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        //只读取名为Name和Age的两列
        var result = reader.AsDataSet(new ExcelDataSetConfiguration()
        {
            ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
            {
                UseHeaderRow = true,
                FilterColumn = (columnName) => columnName == "Name" || columnName == "Age"
            }
        });

        var table = result.Tables[0];
    }
}

这段代码只读取Excel文件中的名为Name和Age的两列,并将其读取到DataTable中。

五、读取日期和时间类型的数据

Excel文件中可能包含日期和时间类型的数据,在读取数据时需要注意类型转换。

foreach (DataTable table in result.Tables)
{
    foreach (DataRow row in table.Rows)
    {
        var dateValue = Convert.ToDateTime(row["Date"]);
        var timeValue = TimeSpan.Parse(row["Time"].ToString());
    }
}

这段代码将读取Excel文件中的日期和时间类型的数据,并将其转换成.NET类型的日期和时间。

六、总结

使用Excel Data Reader组件可以轻松地读取Excel文件中的数据,并且可以自定义需要读取的表格和列。读取日期和时间类型的数据时需要注意类型转换问题。在实际项目中,需要根据具体的需求选择合适的读取方式。