我是新手,这个问题已经困扰我一个星期了。是一个excel储存到数据库的功能,我写的和网上的都差不多,但是一直是报错,代码太多 也不好贴。“至少有一个参数没指定” 字段是对应的,但还是报错。有大神帮忙看下吗 可以有报酬,软妹币也没有关系,如果能帮我解决的话
1条回答 默认 最新
- 会飞的石头。 2023-07-12 18:59关注
以下是一个完整的示例代码,将Excel数据导入到数据库中:
using System; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelImportDemo { public class ExcelImporter { public void ImportExcelData(string excelFilePath, string tableName, string connectionString) { try { // 创建Excel应用程序对象 Excel.Application excelApp = new Excel.Application(); // 打开Excel文件 Excel.Workbook workbook = excelApp.Workbooks.Open(excelFilePath); // 获取第一个工作表 Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1]; // 获取Excel数据范围 Excel.Range range = worksheet.UsedRange; // 获取行数和列数 int rowCount = range.Rows.Count; int columnCount = range.Columns.Count; // 创建连接对象 using (SqlConnection connection = new SqlConnection(connectionString)) { // 打开数据库连接 connection.Open(); // 构建插入SQL语句 string insertSql = $"INSERT INTO {tableName} VALUES "; // 遍历Excel数据并构建插入语句 for (int row = 2; row <= rowCount; row++) // 从第2行开始,忽略表头 { insertSql += "("; for (int col = 1; col <= columnCount; col++) { string cellValue = range.Cells[row, col].Value.ToString(); // 对于字符串类型的数据,需要添加单引号 if (range.Cells[row, col].NumberFormat == "@") { cellValue = $"'{cellValue}'"; } insertSql += cellValue; // 如果不是最后一列,则添加逗号分隔 if (col != columnCount) { insertSql += ","; } } insertSql += ")"; // 如果不是最后一行,则添加逗号分隔 if (row != rowCount) { insertSql += ","; } } // 执行插入操作 using (SqlCommand command = new SqlCommand(insertSql, connection)) { command.ExecuteNonQuery(); } // 关闭数据库连接 connection.Close(); } // 关闭Excel应用程序对象 excelApp.Quit(); } catch (Exception ex) { // 处理异常 Console.WriteLine($"导入Excel数据发生错误:{ex.Message}"); } } } }
在上面的示例代码中,需要传入Excel文件的路径、表名和数据库连接字符串作为参数,并使用ADO.NET的
SqlConnection
和SqlCommand
来执行插入操作。请确认数据库表的结构和Excel文件中的列名和类型匹配。请注意,在导入Excel数据之前,请安装运行Excel的机器上是否已经安装了Microsoft Office相应的库,并在项目中引用
Microsoft.Office.Interop.Excel
库。希望这份代码可以帮助到你,如有其他问题,请发信息。祝你成功导入Excel数据!
解决 无用评论 打赏 举报