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个关键点,一个是有没有父节点,是哪个?
你可以用递归算法,就是写一个函数,从根节点开始,他的作用就是 判断这个节点有没有子节点,如果有,在当前节点上添加上子节点,然后用同样的方法逐个查询各子节点有没有子节点,如果有,先添加,在往下查,直到没有后就返回上一层,具体算法,你上百度查询二叉树的遍历法。

楼下的解答了,很好的!
相似回答
大家正在搜