C#从Excel导入数据到sql同时更新TreeView

我有一个TreeView 是从数据库读出来生成的,

窗体上有个Excel导入, 把数据导入到数据库的同时

更新TreeView!

表结构如下

depId depName depMemo pDepId
PK,not null not null null not null

注(pDepId为 父部门ID 若本身为父部门,则pDepId等于自身的 depId)

请各位高手指点,最好有实例! 在线等!
是导入Excel不会。 TreeView已经可以动态生成了

读取Excel中的数据方法()
using System.Data.OleDb;
private void btnGetDS_Click(object sender, EventArgs e)
{
OpenFileDialog o=new OpenFileDialog();
DataTable dt =New DataTable();
if(o.ShowDialog()==DialogResult.OK)
dt =ExecleDs(o.FileName, "sky").Tables[0];
string strConn = "Data Source=.;DataBase=gongnuan;Uid=sa;Pwd=sa";//连接自己数据库的字符串,自己写吧
OleDbConnection cn = new OleDbConnection(strConn);
for (int i = 0; i < dt.Rows.Count; i++)
{
//日期 excel列名【这里获得某行的每列的值组成插入Sql语句。自己填完整吧,记得,如果某列是string类型的话要加单引号‘’】
string pininputdate = dt.Rows[i]["depId"].ToString() + dt.Rows[i]["depName"].ToString() + "其它的列,你自己写吧";

string insertstr = "insert [表名] values("+ pininputdate+")";

OleDbCommand cmd = new OleDbCommand(insertstr, cn);
try
{
cmd.ExecuteNonQuery();//插入某一行,直到FOR循环完结,即插入完成
}
catch (Exception ex) //捕捉异常
{
MessageBox.Show(ex.Message);
}
}
//至于treeView刷新,这个你应该知道的,和你初始化时一样,清空后,再添加一次就可以拉
}

public DataSet ExecleDs(string filenameurl, string table)
{
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
odda.Fill(ds, table);
return ds;
}

不行的话,再叫我~~~
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-29
不知道你是导入EXCEL不会还是根据数据库更新TreeView不大明白。
我假设你treeView不大明白回答吧,没时间写代码告诉你个逻辑过程。
以前做过一个文件管理器的东东,基本上就是个子父多层链表结构,树状图中的节点要搞清楚一个很关键的问题就是树状图的节点的位置取决于1个关键点,一个是有没有父节点,是哪个?
你可以用递归算法,就是写一个函数,从根节点开始,他的作用就是 判断这个节点有没有子节点,如果有,在当前节点上添加上子节点,然后用同样的方法逐个查询各子节点有没有子节点,如果有,先添加,在往下查,直到没有后就返回上一层,具体算法,你上百度查询二叉树的遍历法。

楼下的解答了,很好的!

excel vba里treeview控件,节点被排序了,求修改
treeview控件有一个sort(排序)属性,修改为fales就行了

怎么用VB实现将EXCEL的数据导入到ACCESS?
最后s1那就是从EXCEL的列、行取东东的.你可dim,s1,s2,s3...数据提取了,你可以用ADO导入.(s1,s2,s3放在已与ADO联接的TEXT上)接下来自己用循环做了,都是别人帮你,没意思了.既然你这么问,数据库的东东你应该知道的了

最先进的3D引擎构架
通过数据表动态建Treeview,绝对高效率!关于XMLBeans\/shcema,不得不说的话题走入汇编的世界在ASP.NET中点击一个按钮后让它变灰的简单方法Mophun & J2ME 的游戏开发之旅(三)用JS验证asp.net服务端控件一个软件测试工程师的加班经历用Visual Basic 6.0实现自动化测试克隆一例如何从现有程序升级到支持多国语言的程序!O...

相似回答
大家正在搜