asp.net读取excel文件的三种方法示例


在ASP.NET中读取Excel文件,常见的方法通常涉及使用第三方库,因为.NET Framework本身不直接支持Excel文件的读取。以下是三种常用的方法来读取Excel文件(假设文件是`.xlsx`格式,对于`.xls`格式,方法类似但可能需要不同的库版本或处理):

### 方法一:使用EPPlus库

EPPlus是一个开源的.NET库,用于处理Excel 2007/2010文件(即`.xlsx`格式)。


using OfficeOpenXml;
using System.IO;

public void ReadExcelWithEPPlus(string filePath)
{
    FileInfo fileInfo = new FileInfo(filePath);
    using (ExcelPackage package = new ExcelPackage(fileInfo))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; // 获取第一个工作表
        int rowCount = worksheet.Dimension.Rows;
        int colCount = worksheet.Dimension.Columns;

        for (int row = 1; row <= rowCount; row++) // 假设第一行是标题行
        {
            for (int col = 1; col <= colCount; col++)
            {
                string value = worksheet.Cells[row, col].Value?.ToString();
                // 处理每个单元格的值
                Console.WriteLine($"Cell ({row},{col}) = {value}");
            }
        }
    }
}

### 方法二:使用ClosedXML库

ClosedXML是另一个流行的.NET库,用于处理Excel文件,它基于EPPlus但提供了更高级的API。


using ClosedXML.Excel;

public void ReadExcelWithClosedXML(string filePath)
{
    using (var workbook = new XLWorkbook(filePath))
    {
        var worksheet = workbook.Worksheet(1); // 获取第一个工作表

        foreach (var row in worksheet.RowsUsed()) // 遍历所有已使用的行
        {
            foreach (var cell in row.CellsUsed()) // 遍历行中的每个已使用的单元格
            {
                string value = cell.Value.ToString();
                // 处理每个单元格的值
                Console.WriteLine($"Cell = {value}");
            }
        }
    }
}

### 方法三:使用Microsoft.Office.Interop.Excel(不推荐用于Web应用)

这个方法依赖于Microsoft Office Excel的安装,因此在Web服务器环境中通常不推荐使用。但是,对于某些桌面应用或具有Office安装权限的服务器,这可能是一个选择。


// 注意:这里只是概念性代码,实际使用时需要处理COM异常和确保Office安装
// 由于不推荐在Web应用中使用,这里不详细展开

// 假设你有一个Excel.Application实例和一个Workbook实例
// ...
// 然后你可以通过Workbook.Sheets[1]获取第一个工作表
// 使用Range或Cells属性遍历单元格

**注意**:对于Web应用,推荐使用方法一或方法二,因为它们不依赖于Office的安装,更适合服务器环境。方法三主要用于桌面应用或与Office紧密集成的场景。