一、数据导出:
将数据库的数据导出成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); } } }