最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
C#使用NPOI实现Excel文件内容导入数据库功能的流程步骤
时间:2026-08-08 07:32:51 编辑:袖梨 来源:一聚教程网
C#使用NPOI实现Excel文件内容导入数据库功能的流程步骤的重点在于把前置条件、操作顺序和容易误判的地方分清楚。
引言
使用NPOI库在C#中导入Excel文件到数据库是一个常见的需求,特别是在处理大量数据时。NPOI是一个开源的.NET库,用于处理Excel文件(.xls和.xlsx格式)。下面是一个基本的步骤和代码示例,展示如何使用NPOI读取Excel文件并将其数据导入到数据库中。

步骤 1: 安装NPOI库
首先,你需要在你的项目中安装NPOI库。你可以通过NuGet包管理器来安装它。在Visual Studio中,你可以通过以下命令安装NPOI:
Install-Package NPOI
步骤 2: 读取Excel文件
使用NPOI读取Excel文件,你可以根据文件类型(.xls或.xlsx)选择合适的类来打开文件。
using NPOI.SS.UserModel;using NPOI.XSSF.UserModel; // 对于.xlsx文件using NPOI.HSSF.UserModel; // 对于.xls文件using System.Data;using System.IO;public DataTable ReadExcelFile(string filePath){ IWorkbook workbook; using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { if (filePath.EndsWith(".xlsx")) { workbook = new XSSFWorkbook(file); // 对于.xlsx文件 } else if (filePath.EndsWith(".xls")) { workbook = new HSSFWorkbook(file); // 对于.xls文件 } else { throw new Exception("Unsupported file format."); } ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表 DataTable dt = new DataTable(); IRow headerRow = sheet.GetRow(0); // 获取第一行(假设为表头) for (int cellIndex = 0; cellIndex < headerRow.LastCellNum; cellIndex++) // 遍历表头列数 { ICell cell = headerRow.GetCell(cellIndex); dt.Columns.Add(cell.ToString()); // 添加列名到DataTable中 } for (int rowIndex = 1; rowIndex <= sheet.LastRowNum; rowIndex++) // 遍历行(从第二行开始) { IRow row = sheet.GetRow(rowIndex); if (row == null) continue; // 如果行为空,则跳过 DataRow dataRow = dt.NewRow(); // 创建新行 for (int cellIndex = 0; cellIndex < row.LastCellNum; cellIndex++) // 遍历单元格列数 { ICell cell = row.GetCell(cellIndex); if (cell != null) dataRow[cellIndex] = cell.ToString(); // 填充数据到DataTable中 } dt.Rows.Add(dataRow); // 添加行到DataTable中 } return dt; // 返回填充好的DataTable }}步骤 3: 将数据导入数据库
在读取完Excel文件并得到DataTable后,你可以使用ADO.NET来将数据导入到数据库中。这里是如何将数据导入SQL Server数据库的示例:
using System.Data.SqlClient;public void ImportDataToDatabase(DataTable dt, string connectionString){ using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); // 打开数据库连接 using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn)) { bulkCopy.DestinationTableName = "YourTableName"; // 设置目标表名 bulkCopy.WriteToServer(dt); // 将DataTable数据写入数据库表中 } }}步骤 4: 调用方法进行导入操作
最后,你可以在主程序中调用这些方法来读取Excel文件并导入到数据库:
string excelFilePath = @"pathtoyourexcelfile.xlsx"; // Excel文件路径string connectionString = "your_connection_string_here"; // 数据库连接字符串DataTable dt = ReadExcelFile(excelFilePath); // 读取Excel文件到DataTable中ImportDataToDatabase(dt, connectionString); // 将数据导入到数据库中
确保你的数据库连接字符串正确,并且目标表已经创建好,具有与Excel文件中列相对应的结构。这样就可以