c#读取excel数据的两种方法实现

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文件。可以根据具体的需求选择适合的方法。

后端开发标签