求c#代码 windows窗体 实现EXCEL数据导入到SQL数据库的相对应字段中

sql数据库中已经有qqq表,表里有id,name,Password,Class,new5个字段,其中id系统自动累加,new可为空值。现在还有一份Excel文件aaa.... sql数据库中已经有qqq表,表里有id,name,Password,Class,new 5个字段,其中id系统自动累加,new可为空值。现在还有一份Excel文件aaa.xls,内容有name,Password,Class,new,new有些是空值,现在想要把aaa.xls的内容导入到qqq中,如何现实,请各位高手赐教,谢谢! 展开
 我来答
宝baocheng
2010-08-20 · 超过12用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:16.4万
展开全部
请参照我写的一个类:
using System;
using System.Data;
using System.Data.OleDb;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using Excel;

namespace SqlFactory.BI
{
public class CExcel
{
private DateTime beforeTime; //Excel启动之前时间
private DateTime afterTime; //Excel启动之后时间

/// <summary>
/// 读取Excel数据的代码 add by zfx 2009.4.20
/// </summary>
/// <returns></returns>
public System.Data.DataTable CreateExcelDataSource(string excelName)
{
string strCon;
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelName + "; Extended Properties='Excel 8.0;IMEX=1';";
OleDbConnection olecon = new OleDbConnection(strCon);
try
{
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
System.Data.DataTable mydt = new System.Data.DataTable();
myda.Fill(mydt);
return mydt;
}
catch (Exception ex)
{
ex.Message.ToString();
return null;
}
finally
{
olecon.Close();
}
}

//动态读取Excel 根据实际表名读取
public DataSet GetExcelDataSource(string excelName)
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelName + "; Extended Properties='Excel 8.0;IMEX=1';";
string sql = "Select * From [{0}]";
OleDbConnection conn = null;
OleDbDataAdapter da = null;
System.Data.DataTable tblSchema = null;
IList<string> tblNames = null;
// 初始化连接,并打开
conn = new OleDbConnection(connStr);
conn.Open();
// 获取数据源的表定义元数据
tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
tblNames = new List<string>();
foreach (DataRow row in tblSchema.Rows)
{
tblNames.Add((string)row["TABLE_NAME"]); // 读取表名
}
// 初始化适配器
da = new OleDbDataAdapter();
// 准备数据,导入DataSet
DataSet ds = new DataSet();
foreach (string tblName in tblNames)
{
da.SelectCommand = new OleDbCommand(String.Format(sql, tblName), conn);
try
{
da.Fill(ds, tblName);
}
catch
{
// 关闭连接
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return null;
}
}

// 关闭连接
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return ds;
}

不过对excel文件有要求,excel文件里面智能有一个sheet,且命名为Sheet1;
这样可以把excel文件的内容读入到grid里面去!
希望对您有帮助!
伙伙扭牛
2010-08-20 · 超过34用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:0
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lhappyb
2010-08-20 · TA获得超过142个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:136万
展开全部
用存储过程可以直接访问excel数据的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式