C#项目1:比较两个xml配置文件异同,并将结果存入一个Excel文档(二)

该博客介绍了使用C#进行XML配置文件比较的项目,包括读取XML到DataTable、比较DataTable、导出结果到Excel以及通过宏标识不同。主要涉及XML操作、DataTable使用、数据排序、Excel导出以及C#创建Excel宏。
摘要由CSDN通过智能技术生成

目录

 

组成文件

1. Main_frm.cs:窗体文件。主界面,用户指定两个待比较的xml文件,选择待比较的属性。

2.Export.cs :窗体文件。导出界面,用于指定保存比较结果的Excel路径,显示导出进度,以及结束按钮。

3. readXmlToDt.cs:类文件。用于将xml文件读到一个dataTable中。

4.compareDt.cs:类文件。在两个dataTable所有列名相同的情况下,比较相同ID行的属性值是否相同。

5. exportDtToExcel.cs:类文件。将dataTable输出到Excel文件中。

6.colorExcel.cs:类文件。用C#在Excel文件中创建宏(VB),应用此宏来标识特定条件的文本。


组成文件

1. Main_frm.cs:窗体文件。主界面,用户指定两个待比较的xml文件,选择待比较的属性。

2.Export.cs :窗体文件。导出界面,用于指定保存比较结果的Excel路径,显示导出进度,以及结束按钮。

3. readXmlToDt.cs:类文件。用于将xml文件读到一个dataTable中。

思路:递归读取xml文件的所有叶子节点,将其存入一个泛型List<XmlNode>中。

应用知识点  泛型的应用  ,  XML介绍及基本操作

//创建类型表存放叶子节点
        List<XmlNode> leafNodes = new List<XmlNode>();
//读取xml文档的叶子节点到一个List<XmlNode>中
        public DataTable read_forList(string path)
        {
            //创建xml文档
            XmlDocument xml = new XmlDocument();
            //加载要读取的xml文件
            xml.Load(path);
            //获取文档中的根节点
            XmlElement root = xml.DocumentElement;
            recnode(root);
            DataTable dt = new DataTable();
            dt = listToTable(leafNodes);
            return dt;
        }
//递归读子节点
        public void recnode(XmlNode node)
        {
            if (node.HasChildNodes)
            {//如果有子节点
                XmlNodeList children = node.ChildNodes;
                foreach (XmlNode child in children)
                {
                    recnode(child);
                }
            }
            else
            {//如果没有子节点
                string node_str = node.ToString();
                if (node.Attributes != null && node.Attributes.Count != 0)
                {//若节点有属性,则为需要的叶子节点,装入到List中
                    leafNodes.Add(node);
                }
            }
        }

思路:新建一个空数据表dataTable,将List<XmlNode>里的内容存入其中。

应用知识点   dataTable的详细用法

//创建一个新DataTable       
        public DataTable buildDataTable()
        {//设定一些列名
            DataTable temTable = new DataTable();
            temTable.Columns.Add(new DataColumn("ID", typeof(String)));
            temTable.Columns.Add(new DataColumn("NAME", typeof(String)));
            temTable.Columns.Add(new DataColumn("attr1", typeof(String)));
            temTable.Columns.Add(new DataColumn("attr2", typeof(String)));
            temTable.Columns.Add(new DataColumn("attr3", typeof(String)));
            temTable.Columns.Add(new DataColumn("attr4", typeof(String)));
            temTable.Columns.Add(new DataColumn("attr5
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值