首页 > 代码库 > 数据导出和TreeView

数据导出和TreeView

一、数据导出:
将数据库的数据导出成Excel工作表或是Word文档
实际上是将一个泛型集合导出出去
(1)添加控件
saveFileDialog
(2)数据成表格的形式输出出去
<table></table> 拼成html里面的table表格结构,拼成一个字符串,导出出去

(3)字符串拼接效率低,消耗内存大
StringBuilder ss = new StringBuilder();//实例化
ss.Append();//添加

(4)导出数据时开线程节省时间,防止程序假死;进度条显示进度。

代码:

          List<Product1> list=null;
             int a = 0;

       private void button1_Click(object sender, EventArgs e)        {            //一个按钮要可以让用户选择导出的文件格式            saveFileDialog1.Filter = "Excel工作表|*.xlsx|Word文档|*.doc";            //名字按照时间自动生成            saveFileDialog1.FileName = DateTime.Now.Year + "" + DateTime.Now.Month + "月数据";            DialogResult dr = saveFileDialog1.ShowDialog(); //获取一个用户要保存的路径            if (dr == DialogResult.OK)            {                StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);//输出流                                {                    Thread th = new Thread(NewMethod);//实例化线程                    th.IsBackground = true;                    th.Start(sw);//开线程                                   }            }        }       //导出数据的函数        private void NewMethod(object sw)        {            StreamWriter sww = (StreamWriter)sw;            StringBuilder ss = new StringBuilder();//实例化StringBuilder类            ss.Append("<table border=\"1\">");//边框            //表头            ss.Append("<tr><td>序号</td><td>用户名</td><td>密码</td><td>昵称</td><td>性别</td><td>年龄</td><td>生日</td><td>民族</td></tr>");            b = list.Count();//集合的个数            progressBar1.Maximum = b;//滚动条的最大值是集合的个数            foreach (Product1 u in list)                {                    ss.Append("<tr>");                    ss.Append("<td>" + u.ProductId + "</td>");                    ss.Append("<td>" + u.ProductName + "</td>");                    ss.Append("<td>" + u.ProductCategory + "</td>");                    ss.Append("<td>" + u.ProductUnit + "</td>");                    ss.Append("<td>" + u.ProductArea + "</td>");                    ss.Append("<td>" + u.ProductDate + "</td>");                    ss.Append("<td>" + u.ProductLif + "</td>");                    ss.Append("</tr>");                    a++;//每循环一次a加1                    if (a <= b)//a<b时滚动条变化                    {                        progressBar1.Value = a;                    }                    else { break; }                }                a = 0;                ss.Append("</table>");                sww.Write(ss);                sww.Close();        }

 

二、TreeView
Treeview用于显示按照树形结构进行组织的数据。
Expanded属性表明是否所有的子项都全部展开(包括子项的子项),为True表示全部展开。

     private void button1_Click(object sender, EventArgs e)        {            List<ChinaStates> list1 = new ChinaData().Select();//一次性查找出数据库中的所有数据            TreeNode tn = new TreeNode("中国");            tn.Tag = "0001";//记录这个节点的编号            treeView1.Nodes.Add(tn);            TreeViewBind(tn, list1);//调用函数        }        //递归调用自身        private static void TreeViewBind(TreeNode tn, List<ChinaStates> list)        {            foreach (ChinaStates c in list)            {                if (c.ParentAreaCode == tn.Tag.ToString())                {                    TreeNode tnn = new TreeNode(c.AreaName);                    tnn.Tag = c.AreaCode;                    tn.Nodes.Add(tnn);                    TreeViewBind(tnn, list);                }            }        }

 

数据导出和TreeView