C#将EXCEL里面的数据导入数据库 c#编程数据库excel数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 分两步:1.读excel,放到datatable里2.循环datatable,插入数据库就这么简单.你把这两个研究明白了,问题就迎刃而解研究不明白,就好好研究吧,不要老想一步到位 第一步:上传XLS文件到到服务器第二步:读取XLS文件到DATATABLE第三步:循环遍历DATATABLE插入数据库 将Excel数据文件导入到SQL Server数据库示例//选择Excel数据文件 private void btn_Select_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Excel文件|*.xls";//设置打开文件筛选器 openFileDialog1.Title = "选择Excel文件";//设置打开对话框标题 openFileDialog1.Multiselect = true;//设置打开对话框中可以多选 if (openFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了文件 { for (int i = 0; i < openFileDialog1.FileNames.Length; i++)//遍历所有选择的文件 txt_Path.Text += openFileDialog1.FileNames[i] + ",";//在文本框中显示Excel文件名 }//codego.net/tags/1/1/ }//选择数据库private void btn_Refresh_Click(object sender, EventArgs e) { //定义SQL语句 string P_str_Con = "Data Source=" + txt_Server.Text + ";Database=master;Uid=" + txt_Name.Text + ";Pwd=" + txt_Pwd.Text + ";"; cbox_Server.DataSource = GetTable(P_str_Con);//为下拉列表指定数据源 cbox_Server.DisplayMember = "name";//设置下拉列表中显示的字段名称 cbox_Server.ValueMember = "name";//设置下拉列表中显示的值名称 if (cbox_Server.Items.Count > 0)//如果下拉列表中有项 cbox_Server.SelectedIndex = 0;//设置默认选择第一项 }//获取指定服务器中的所有数据库private DataTable GetTable(string P_str_Sql) { try { SqlConnection sqlcon = new SqlConnection(P_str_Sql);//实例化数据库连接对象 SqlDataAdapter sqlda = new SqlDataAdapter("select name from sysdatabases ", sqlcon);//实例化数据桥接器对象 DataTable DTable = new DataTable("sysdatabases");//实例化DataTable对象 sqlda.Fill(DTable);//填充DataTable数据表 return DTable;//返回DataTable数据表 } catch { return null;//返回null } }//把Excel数据导入到数据库 private void btn_Export_Click(object sender, EventArgs e) { string[] P_str_Names = txt_Path.Text.Split(',');//存储所有选择的Excel文件名 string P_str_Name = "";//存储遍历到的Excel文件名 List<string> P_list_SheetNames = new List<string>();//实例化泛型集合对象,用来存储工作表名称 for (int i = 0; i < P_str_Names.Length - 1; i++)//遍历所有选择的Excel文件名 { P_str_Name = P_str_Names[i];//记录遍历到的Excel文件名 P_list_SheetNames = GetSheetName(P_str_Name);//获取Excel文件中的所有工作表名 for (int j = 0; j < P_list_SheetNames.Count; j++)//遍历所有工作表 { if (ckbox_Windows.Checked)//如果用Windows身份验证登录Sql Server ImportDataToSql(P_str_Name, P_list_SheetNames[j], "Data Source=" + txt_Server.Text + ";Initial Catalog =" + cbox_Server.Text + ";Integrated Security=SSPI;");//将工作表内容导出到Sql Server else if (ckbox_SQL.Checked)//如果用Sql Server身份验证登录Sql Server ImportDataToSql(P_str_Name, P_list_SheetNames[j], "Data Source=" + txt_Server.Text + ";Database=" + cbox_Server.Text + ";Uid=" + txt_Name.Text + ";Pwd=" + txt_Pwd.Text + ";");//将工作表内容导出到Sql Server } } MessageBox.Show("已经将所有选择的Excel工作表导入到了Sql Server数据库中!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } 参见:http://www.cnblogs.com/bicabo/archive/2009/05/05/1449906.html可以使用sqlbulkcopy 批量拷贝到数据库。参见:http://www.cnblogs.com/shikyoh/archive/2011/07/01/2095633.html 先要将Excel中的数据读取到DataTable中,然后再遍历DataTable把数据插入到数据库中。C#Excel数据转换成DataTable,详见http://bbs.netluntan.com/showtopic-417.aspx,将Excel中的数据转换成DataTable。 请教如何合并两个excel 100分求一个窗体打印程序 这段代码如何改写成try catch的形式? 关于使用System.Transactions命名空间 还是水晶报表的问题? 关于升级1.1 常识性问题....在线等 使用detailsview,自动生成的“编辑”、“更新”、“取消”按钮变成英文 用StreamReader是不是只能读文本文件啊?在用StreamReader读Word文件时汉字出乱码?急!!! 怎么用C#编程实现添加域用户的功能 如何代码增加combox的项。实际值和显示值 关于System.Windows.Forms.Timer问题
1.读excel,放到datatable里
2.循环datatable,插入数据库
就这么简单.
你把这两个研究明白了,问题就迎刃而解
研究不明白,就好好研究吧,不要老想一步到位
第二步:读取XLS文件到DATATABLE
第三步:循环遍历DATATABLE插入数据库
//选择Excel数据文件
private void btn_Select_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "Excel文件|*.xls";//设置打开文件筛选器
openFileDialog1.Title = "选择Excel文件";//设置打开对话框标题
openFileDialog1.Multiselect = true;//设置打开对话框中可以多选
if (openFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了文件
{
for (int i = 0; i < openFileDialog1.FileNames.Length; i++)//遍历所有选择的文件
txt_Path.Text += openFileDialog1.FileNames[i] + ",";//在文本框中显示Excel文件名
}//codego.net/tags/1/1/
}
//选择数据库
private void btn_Refresh_Click(object sender, EventArgs e)
{
//定义SQL语句
string P_str_Con = "Data Source=" + txt_Server.Text + ";Database=master;Uid=" + txt_Name.Text + ";Pwd=" + txt_Pwd.Text + ";";
cbox_Server.DataSource = GetTable(P_str_Con);//为下拉列表指定数据源
cbox_Server.DisplayMember = "name";//设置下拉列表中显示的字段名称
cbox_Server.ValueMember = "name";//设置下拉列表中显示的值名称
if (cbox_Server.Items.Count > 0)//如果下拉列表中有项
cbox_Server.SelectedIndex = 0;//设置默认选择第一项
}
//获取指定服务器中的所有数据库private DataTable GetTable(string P_str_Sql)
{
try
{
SqlConnection sqlcon = new SqlConnection(P_str_Sql);//实例化数据库连接对象
SqlDataAdapter sqlda = new SqlDataAdapter("select name from sysdatabases ", sqlcon);//实例化数据桥接器对象
DataTable DTable = new DataTable("sysdatabases");//实例化DataTable对象
sqlda.Fill(DTable);//填充DataTable数据表
return DTable;//返回DataTable数据表
}
catch
{
return null;//返回null
}
}
//把Excel数据导入到数据库
private void btn_Export_Click(object sender, EventArgs e)
{
string[] P_str_Names = txt_Path.Text.Split(',');//存储所有选择的Excel文件名
string P_str_Name = "";//存储遍历到的Excel文件名
List<string> P_list_SheetNames = new List<string>();//实例化泛型集合对象,用来存储工作表名称
for (int i = 0; i < P_str_Names.Length - 1; i++)//遍历所有选择的Excel文件名
{
P_str_Name = P_str_Names[i];//记录遍历到的Excel文件名
P_list_SheetNames = GetSheetName(P_str_Name);//获取Excel文件中的所有工作表名
for (int j = 0; j < P_list_SheetNames.Count; j++)//遍历所有工作表
{
if (ckbox_Windows.Checked)//如果用Windows身份验证登录Sql Server
ImportDataToSql(P_str_Name, P_list_SheetNames[j], "Data Source=" + txt_Server.Text + ";Initial Catalog =" + cbox_Server.Text + ";Integrated Security=SSPI;");//将工作表内容导出到Sql Server
else if (ckbox_SQL.Checked)//如果用Sql Server身份验证登录Sql Server
ImportDataToSql(P_str_Name, P_list_SheetNames[j], "Data Source=" + txt_Server.Text + ";Database=" + cbox_Server.Text + ";Uid=" + txt_Name.Text + ";Pwd=" + txt_Pwd.Text + ";");//将工作表内容导出到Sql Server
}
}
MessageBox.Show("已经将所有选择的Excel工作表导入到了Sql Server数据库中!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
可以使用sqlbulkcopy 批量拷贝到数据库。参见:http://www.cnblogs.com/shikyoh/archive/2011/07/01/2095633.html