zoukankan      html  css  js  c++  java
  • 数据导出和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);
                    }
                }
            }
  • 相关阅读:
    BZOJ1527 : [POI2005]Pun-point
    2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
    2016-2017 ACM-ICPC Northwestern European Regional Programming Contest (NWERC 2016)
    NAIPC-2016
    BZOJ2498 : Xavier is Learning to Count
    ACM ICPC Vietnam National Second Round
    XVI Open Cup named after E.V. Pankratiev. GP of Ukraine
    XVI Open Cup named after E.V. Pankratiev. GP of Peterhof
    HDU5509 : Pattern String
    BZOJ4583 : 购物
  • 原文地址:https://www.cnblogs.com/zhang-dandan-1/p/5951722.html
Copyright © 2011-2022 走看看