.Net读取Excel 返回DataTable实例代码


在.NET中,读取Excel文件并返回`DataTable`实例通常可以通过第三方库如`EPPlus`或`ClosedXML`来实现,但考虑到`EPPlus`是较常用且广泛支持的库,这里我将提供一个使用`EPPlus`读取Excel文件并转换为`DataTable`的示例代码。

首先,确保你已经通过NuGet安装了`EPPlus`库。


using System;
using System.Data;
using OfficeOpenXml;

public class ExcelReader
{
    public DataTable ReadExcelToDataTable(string filePath)
    {
        DataTable dt = new DataTable();

        try
        {
            using (var package = new ExcelPackage(new FileInfo(filePath)))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; // 假设我们读取第一个工作表
                int colCount = worksheet.Dimension.End.Column;
                int rowCount = worksheet.Dimension.End.Row;

                // 添加列
                for (int col = 1; col <= colCount; col++)
                {
                    dt.Columns.Add(worksheet.Cells[1, col].Value.ToString()); // 假设第一行是列标题
                }

                // 填充数据
                for (int row = 2; row <= rowCount; row++)
                {
                    DataRow dr = dt.NewRow();

                    for (int col = 1; col <= colCount; col++)
                    {
                        dr[col - 1] = worksheet.Cells[row, col].Value ?? DBNull.Value;
                    }

                    dt.Rows.Add(dr);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error reading Excel file: " + ex.Message);
        }

        return dt;
    }
}

在这段代码中,`ReadExcelToDataTable`方法接受一个Excel文件的路径作为参数,并使用`EPPlus`库来读取该文件。它首先创建一个`DataTable`实例,然后遍历Excel文件的第一个工作表,将第一行作为列标题添加到`DataTable`中,并将剩余的行作为数据行添加到`DataTable`中。注意,这里假设Excel文件的第一行是列标题,且所有需要的数据都位于第一个工作表中。

请注意,由于Excel文件的复杂性和多样性,这个示例可能需要根据具体的Excel文件格式进行调整。例如,如果Excel文件中的某些单元格包含日期或数字格式的数据,并且你想要以特定方式处理这些数据,你可能需要添加额外的逻辑来解析这些数据。

此外,这段代码没有处理可能存在的空行或列的情况,也没有进行错误处理以应对Excel文件损坏或格式不正确的情况。在实际应用中,你可能需要添加这些额外的检查和处理逻辑。