我是新手,这个问题已经困扰我一个星期了。是一个excel储存到数据库的功能,我写的和网上的都差不多,但是一直是报错,代码太多 也不好贴。“至少有一个参数没指定” 字段是对应的,但还是报错。有大神帮忙看下吗 可以有报酬,软妹币也没有关系,如果能帮我解决的话
以下是一个完整的示例代码,将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数据!