关于用C#实现Excel导入到数据库中 红色部分表示数据源也就是xls的位置,,但是前提服务器必须安装office.所以不如你看看这个.. 应该对你有帮助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 所谓EXCEL导入数据库,其实是分为2步的1.先把EXCEL的内容读取出来,放到一个数据集里2.把数据集里的数据插入到数据库中这两点研究明白了,你想怎么导,就怎么导 /// <summary>/// 读取excel数据/// </summary>/// <param name="filename">文件路径 例如:C:\excel\test.xls</param>/// <param name="worksheetname">工作簿名称 例如:[Sheet1$]</param>/// <returns></returns>public static System.Data.DataTable LoadExcelToDataTable(string filename, string worksheetname){ System.Data.DataTable table; try { //连接字符串 String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""; OleDbConnection myConn = new OleDbConnection(sConnectionString); string strCom = " SELECT * FROM [" + worksheetname + "]"; myConn.Open(); OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn); table = new System.Data.DataTable(); myCommand.Fill(table); myConn.Close(); return table; } catch (Exception ex) { return null; }}传参数,执行上面的语句,返回table。剩下的就是将table内容插入数据库了,比如做个for循环,把table的每一条都拼成一条sql语句,并执行sql语句。DataTable table = LoadExcelToDataTable("文件路径 例如:C:\excel\test.xls", "工作簿名称 例如:[Sheet1$]");for (int i = 0; i < table.Rows.Count; i++){ string strSQL = "insert into [表名] (列名1,列名2,列名3) values('" + table.Rows[i][0].ToString() + "','" + table.Rows[i][1].ToString() + "','" + table.Rows[i][2].ToString() + "')"; SqlConnection conn = new SqlConnection("此处用你的链接字符串"); conn.Open(); SqlCommand comm = new SqlCommand(); comm.Connection = conn; comm.CommandText = strSQL; comm.ExecuteNonQuery(); conn.Close();}基本就这么个思路吧,随便写写,未经测试,不喜勿拍。一楼说的对,这种方式得有office的数据连接组件,否则容易报出异常,例如报出如下提示异常详细信息: System.InvalidOperationException: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。 做聊天工具tabcontrol无法切换图片 关于反射 C#如何操作excel 这种效果怎么做出来的? 如何使用BindingSource.AddNew添加數據 如何判断输入的内容是否符合我的要求 如何使用其他类中的回调函数? 数据插入 要如何在C#中加入.lib静态库的引用? DataGridView 全选打勾 当数据行达到四五千行的时候时间过长要七八秒,有啥可以优化的方法吗? IO读、写文件异常 WINFORM 怎么把imagelist的图片显示在listview
1.先把EXCEL的内容读取出来,放到一个数据集里
2.把数据集里的数据插入到数据库中这两点研究明白了,你想怎么导,就怎么导
/// 读取excel数据
/// </summary>
/// <param name="filename">文件路径 例如:C:\excel\test.xls</param>
/// <param name="worksheetname">工作簿名称 例如:[Sheet1$]</param>
/// <returns></returns>
public static System.Data.DataTable LoadExcelToDataTable(string filename, string worksheetname)
{
System.Data.DataTable table;
try
{
//连接字符串
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
OleDbConnection myConn = new OleDbConnection(sConnectionString);
string strCom = " SELECT * FROM [" + worksheetname + "]";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
table = new System.Data.DataTable();
myCommand.Fill(table);
myConn.Close();
return table;
}
catch (Exception ex)
{
return null;
}
}
传参数,执行上面的语句,返回table。剩下的就是将table内容插入数据库了,比如做个for循环,把table的每一条都拼成一条sql语句,并执行sql语句。
DataTable table = LoadExcelToDataTable("文件路径 例如:C:\excel\test.xls", "工作簿名称 例如:[Sheet1$]");
for (int i = 0; i < table.Rows.Count; i++)
{
string strSQL = "insert into [表名] (列名1,列名2,列名3) values('" + table.Rows[i][0].ToString() + "','" + table.Rows[i][1].ToString() + "','" + table.Rows[i][2].ToString() + "')";
SqlConnection conn = new SqlConnection("此处用你的链接字符串");
conn.Open();
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandText = strSQL;
comm.ExecuteNonQuery();
conn.Close();
}基本就这么个思路吧,随便写写,未经测试,不喜勿拍。一楼说的对,这种方式得有office的数据连接组件,否则容易报出异常,例如报出如下提示
异常详细信息: System.InvalidOperationException: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。