1. 使用Microsoft.Office.Interop.Excel库读取Excel数据
在C#中,可以使用Microsoft.Office.Interop.Excel库来读取和操作Excel文件。该库提供了许多与Excel文件交互的功能,使得读取Excel数据变得简单和方便。
1.1 安装并导入Interop.Excel库
首先,需要安装Interop.Excel库。可以通过NuGet包管理器或手动下载并安装Interop.Excel库。
安装完成后,在代码文件的开头处导入Interop.Excel库:
using Excel = Microsoft.Office.Interop.Excel;
1.2 打开Excel文件
使用Interop.Excel库,可以通过以下方式打开Excel文件:
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Open("path_to_excel_file");
Excel.Worksheet worksheet = workbook.Sheets[1];
上述代码中,"path_to_excel_file"是Excel文件的路径。通过打开文件,可以访问Excel文件的工作簿和工作表。
1.3 读取Excel数据
一旦打开了Excel文件,就可以使用Interop.Excel库中提供的方法来读取数据。以下是一种常见的方法,用于逐行读取Excel表格中的数据:
int rowCount = worksheet.UsedRange.Rows.Count;
int colCount = worksheet.UsedRange.Columns.Count;
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
Excel.Range cell = worksheet.Cells[i, j];
string cellValue = cell.Value != null ? cell.Value.ToString() : "";
// 在这里处理Excel单元格的值
// ...
}
}
上述代码中,rowCount和colCount分别表示Excel表格中的行数和列数。通过遍历每个单元格,可以获取单元格的值并进行处理。
1.4 关闭Excel文件
完成数据读取后,应该关闭打开的Excel文件,以释放资源和关闭Excel进程:
workbook.Close();
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
通过上述代码,可以关闭工作表、工作簿和Excel应用程序,并释放所有相关的COM对象。
2. 使用NPOI库读取Excel数据
NPOI是一个开源的C#库,可以直接读取和写入Excel文件。与Interop.Excel库相比,NPOI不依赖于Excel应用程序,因此可以更好地适用于服务器端应用程序。
2.1 安装并导入NPOI库
首先,需要安装NPOI库。可以通过NuGet包管理器或手动下载并安装NPOI库。
安装完成后,在代码文件的开头处导入NPOI库的命名空间:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;
2.2 打开Excel文件
使用NPOI库,可以通过以下方式打开Excel文件:
FileStream fileStream = new FileStream("path_to_excel_file", FileMode.Open, FileAccess.Read);
IWorkbook workbook = new XSSFWorkbook(fileStream);
ISheet worksheet = workbook.GetSheetAt(0);
上述代码中,"path_to_excel_file"是Excel文件的路径。通过打开文件流,可以创建工作簿和工作表对象。
2.3 读取Excel数据
一旦打开了Excel文件,就可以使用NPOI库中提供的方法来读取数据。以下是一种常见的方法,用于逐行读取Excel表格中的数据:
int rowCount = worksheet.LastRowNum + 1;
int colCount = worksheet.GetRow(0).LastCellNum;
for (int i = 0; i < rowCount; i++)
{
IRow row = worksheet.GetRow(i);
for (int j = 0; j < colCount; j++)
{
ICell cell = row.GetCell(j);
if (cell != null)
{
string cellValue = cell.ToString();
// 在这里处理Excel单元格的值
// ...
}
}
}
上述代码中,rowCount和colCount分别表示Excel表格中的行数和列数。通过遍历每个单元格,可以获取单元格的值并进行处理。
2.4 关闭Excel文件
完成数据读取后,应该关闭打开的Excel文件,以释放资源:
workbook.Close();
fileStream.Close();
通过上述代码,可以关闭工作簿和文件流,并释放所有相关的资源。
总结
本文介绍了使用Interop.Excel和NPOI两种库来读取Excel文件的方法。使用Interop.Excel库需要安装Excel应用程序,适用于简单的本地应用程序。使用NPOI库不依赖于Excel应用程序,适用于服务器端应用程序。
无论使用哪种方法,读取Excel数据的基本步骤是相似的:打开Excel文件、读取数据、关闭Excel文件。可以根据具体的需求选择适合的方法。