C#使用NOPI库实现导入Excel文档
更新时间:2023-08-12前言
本文将使用C#和NOPI库来实现导入Excel文档的功能。NOPI是一个在C#环境下操作Excel文件的强大库,它提供了丰富的功能和API,使得我们能够轻松地读取和处理Excel文档。
代码实现
首先,我们需要安装NOPI库。可以通过NuGet包管理器来安装,或者手动下载和引用DLL文件。
using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; public class ExcelImporter { public DataTable ImportExcel(string filePath) { DataTable dataTable = new DataTable(); using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { IWorkbook workbook; if (Path.GetExtension(filePath) == ".xlsx") { workbook = new XSSFWorkbook(file); } else if (Path.GetExtension(filePath) == ".xls") { workbook = new HSSFWorkbook(file); } else { throw new Exception("Invalid file format. Only .xlsx and .xls files are supported."); } ISheet sheet = workbook.GetSheetAt(0); // 获取表头 IRow headerRow = sheet.GetRow(0); int cellCount = headerRow.LastCellNum; for (int i = 0; i < cellCount; i++) { string columnName = headerRow.GetCell(i).StringCellValue; DataColumn column = new DataColumn(columnName); dataTable.Columns.Add(column); } // 获取数据 int rowCount = sheet.LastRowNum; for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); DataRow dataRow = dataTable.NewRow(); for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) { dataRow[j] = row.GetCell(j).ToString(); } } dataTable.Rows.Add(dataRow); } } return dataTable; } }
代码解释
上述代码定义了一个名为ExcelImporter的类,该类包含一个名为ImportExcel的方法,用于导入指定路径的Excel文档并返回一个DataTable对象。DataTable是C#中用于表示表格数据的类。
在ImportExcel方法中,我们首先根据文件路径创建一个FileStream对象,然后根据文件扩展名选择相应的Workbook类型,使用XSSFWorkbook或HSSFWorkbook来读取Excel文档,分别对应新版和旧版的Excel格式。
接下来,我们获取Excel文档中的第一个工作表(索引为0),并获取表头行,根据表头行的单元格数量创建DataTable的列。然后,我们遍历数据行,将每一行的数据存储到DataTable中。
最后,我们返回DataTable对象,即包含Excel文档数据的表格。
总结
通过使用C#和NOPI库,我们可以方便地导入Excel文档并进行处理。借助NOPI提供的丰富功能和API,我们可以轻松地读取Excel文档的内容,并将其转换为C#中的数据对象,如DataTable。这样,我们就可以在程序中对Excel数据进行进一步的操作和分析。