• 数据导出和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);
                    }
                }
            }
  • 相关阅读:
    偏函数
    通过local对象的使用,分析flask中全局request对象为神魔不同的视图函数中不会混乱--协助解读flask的源码
    flask安装即web框架介绍
    事件
    文件复制工具
    非文本文件的写入
    文件读取
    sys模块
    datetime模块
    事件冒泡与捕获
  • 原文地址:https://www.cnblogs.com/zhang-dandan-1/p/5951722.html
Copyright © 2020-2023  润新知