using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.IO; using System.Text; using System.Windows.Forms; using System.Xml; using DevComponents.DotNetBar; namespace Cyberpipe { public partial class FrmMDDictory : Office2007Form { string filename = Utility.filename; List<string> pipelineLayerNames = new List<string>();//线图层名称 List<string> workwellLayerNames = new List<string>();//工井图层名称 List<string> valueLayerNames = new List<string>();//阀门图层名称 List<string> instrumenLayerNames = new List<string>();//附属物图层名称 private static SqlConnection conn = null; private static SqlCommand sqlCmd = null; private static SqlDataReader sqlReader = null; public static string layernamePub; public FrmMDDictory() { InitializeComponent(); //初始化树 loadTreeView(layerTree); } private void layerTree_AfterSelect(object sender, TreeViewEventArgs e) { String layername = layerTree.SelectedNode.Text; layernamePub = layername; if (layerTree.SelectedNode.GetNodeCount(true) == 0) { searchLayerDicInfo(layername); } } private void searchLayerDicInfo(string layername) { string strSql = "select COLUMN_NAME 字段名, DATA_TYPE 类型编号, DATA_LENGTH 长度 from " + " user_tab_columns where TABLE_NAME='" + layername+"'"; DataTable table = OledbHelper.QueryTable(strSql); dataGridViewX1.DataSource = table; } private void loadTreeView(TreeView tv)//构建图层树 { try { XmlDocument doc = new XmlDocument(); doc.Load(filename); XmlNodeList Params1 = doc.SelectNodes("/Params/layers"); //tv.ShowPlusMinus = false; //tv.Nodes.Clear(); tv.ShowLines = true; // tv.ImageList = imageList1; tv.CheckBoxes = false; foreach (XmlNode paramsNode in Params1) //layers { foreach (XmlNode layerNode in paramsNode) //layer { TreeNode nodelayer = new TreeNode(); string layerName = layerNode.Attributes["label"].Value; nodelayer.Text = layerName; if (layerNode.HasChildNodes) { tv.Nodes.Add(nodelayer); foreach (XmlNode layerchildNode in layerNode) //layerchild { if (layerchildNode.Name == "layerchild") { TreeNode nodelayerchild = new TreeNode(); string layerType = layerchildNode.Attributes["type"].Value; string layerchildName = layerchildNode.Attributes["label"].Value; if (layerType == "locaserver") { //string layerName1 = layerchildNode.Attributes["layer"].Value; //nodelayerchild.Text = layerchildName; //nodelayerchild.Tag = layerType + "|" + layerName1; //nodelayerchild.Checked = true; //nodelayer.Nodes.Add(nodelayerchild); } else { string layerName1 = layerchildNode.Attributes["layer"].Value; if (layerchildNode.Attributes["isPipeLine"] != null) { pipelineLayerNames.Add(layerName1); } if (layerchildNode.Attributes["isWorkWell"] != null) { workwellLayerNames.Add(layerName1); } if (layerchildNode.Attributes["isValve"] != null) { valueLayerNames.Add(layerName1); } if (layerchildNode.Attributes["isInstrument"] != null) { instrumenLayerNames.Add(layerName1); } //bool boollayer = AddLayers(layerName1, ""); nodelayerchild.Text = layerchildName; nodelayerchild.Tag = layerType + "|" + layerName1; //nodelayerchild.Checked = boollayer; nodelayer.Nodes.Add(nodelayerchild); } } else if (layerchildNode.Name == "layertype") { TreeNode nodelayerchild = new TreeNode(); string layerType = layerchildNode.Attributes["label"].Value; nodelayerchild.Text = layerType; nodelayerchild.Tag = layerType; nodelayerchild.Checked = true; nodelayer.Nodes.Add(nodelayerchild); if (layerchildNode.HasChildNodes) { foreach (XmlNode childNodeLayer in layerchildNode) { if (childNodeLayer.HasChildNodes) { TreeNode nodelayerchild2 = new TreeNode(); string layer = childNodeLayer.Attributes["label"].Value; nodelayerchild2.Text = layer; nodelayerchild2.Tag = layer; nodelayerchild2.Checked = true; nodelayerchild.Nodes.Add(nodelayerchild2); foreach (XmlNode n in childNodeLayer) { TreeNode nodelayerchild1 = new TreeNode(); string layerName1 = n.Attributes["layer"].Value; string layerchildName = n.Attributes["label"].Value; string layerType1 = n.Attributes["type"].Value; if (n.Attributes["isPipeLine"] != null) { pipelineLayerNames.Add(layerName1); } if (n.Attributes["isWorkWell"] != null) { workwellLayerNames.Add(layerName1); } if (n.Attributes["isValve"] != null) { valueLayerNames.Add(layerName1); } if (n.Attributes["isInstrument"] != null) { instrumenLayerNames.Add(layerName1); } //bool boollayer = AddLayers(layerName1, ""); nodelayerchild1.Text = layerchildName; nodelayerchild1.Tag = layerType1 + "|" + layerName1; //nodelayerchild1.Checked = boollayer; nodelayerchild2.Nodes.Add(nodelayerchild1); } } else { TreeNode nodelayerchild1 = new TreeNode(); string layerName1 = childNodeLayer.Attributes["layer"].Value; string layerchildName = childNodeLayer.Attributes["label"].Value; string layerType1 = childNodeLayer.Attributes["type"].Value; if (childNodeLayer.Attributes["isPipeLine"] != null) { pipelineLayerNames.Add(layerName1); } if (childNodeLayer.Attributes["isWorkWell"] != null) { workwellLayerNames.Add(layerName1); } if (childNodeLayer.Attributes["isValve"] != null) { valueLayerNames.Add(layerName1); } if (childNodeLayer.Attributes["isInstrument"] != null) { instrumenLayerNames.Add(layerName1); } //bool boollayer = AddLayers(layerName1, ""); nodelayerchild1.Text = layerchildName; nodelayerchild1.Tag = layerType1 + "|" + layerName1; //nodelayerchild1.Checked = boollayer; nodelayerchild.Nodes.Add(nodelayerchild1); } } } } } } else { tv.Nodes.Add(nodelayer); } } } if (tv.Nodes.Count > 0) { //tv.Nodes[0].Expand(); if (tv.Nodes.Count > 0) { foreach (TreeNode node in tv.Nodes) { //node.Expand(); } } } //tv.ExpandAll(); } catch (Exception ex) { LogError.PublishError(ex); } } //导出结果 private void buttonX1_Click(object sender, EventArgs e) { if (dataGridViewX1.Rows.Count > 0) { SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Excel files (*.xls)|*.xls"; dlg.FilterIndex = 0; dlg.RestoreDirectory = true; //dlg.CreatePrompt = true; dlg.Title = "保存为Excel文件"; dlg.FileName = layernamePub + "图层-" + DateTime.Now.ToString("yyyyMMdd") + ".xls"; if (dlg.ShowDialog() == DialogResult.OK) { Stream myStream; myStream = dlg.OpenFile(); StreamWriter sw = new StreamWriter(myStream, Encoding.GetEncoding(-0)); string columnTitle = ""; try { sw.WriteLine("内容:操作日志;日期:" + DateTime.Now.ToString("yyyy-MM-dd")); //写入列标题 for (int i = 0; i < dataGridViewX1.ColumnCount; i++) { if (i > 0) { columnTitle += "\t"; } columnTitle += dataGridViewX1.Columns[i].HeaderText; } sw.WriteLine(columnTitle); //写入列内容 for (int j = 0; j < dataGridViewX1.Rows.Count; j++) { string columnValue = ""; for (int k = 0; k < dataGridViewX1.Columns.Count; k++) { if (k > 0) { columnValue += "\t"; } if (dataGridViewX1.Rows[j].Cells[k].Value == null) columnValue += ""; else columnValue += dataGridViewX1.Rows[j].Cells[k].Value.ToString().Trim(); } sw.WriteLine(columnValue); } sw.Close(); myStream.Close(); if (MessageBox.Show("导出Excel文件成功!是否打开?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { Process.Start(dlg.FileName); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { sw.Close(); myStream.Close(); } } } } } }