当前位置: 移动技术网 > IT编程>开发语言>.net > 巧用XML配置校验导入Excel的列数据格式

巧用XML配置校验导入Excel的列数据格式

2019年03月08日  | 移动技术网IT编程  | 我要评论

电脑很卡怎么办,长虹影城,冷王的爬墙丑妃txt下载

<?xml version="1.0"?>
<columnsseting xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance">

  <columns>
  <column>
      <columnname>custcode</columnname>
      <columnchinese>客户编码</columnchinese>
      <regcontent></regcontent>
      <datatype></datatype>
      
  </column>
  <column>
      <columnname>custname</columnname>
      <columnchinese>客户名称</columnchinese>
      <regcontent></regcontent>
      <datatype></datatype>
      
  </column>
  <column>
      <columnname>materialcode</columnname>
      <columnchinese>物料编码</columnchinese>
      <regcontent></regcontent>
      <datatype></datatype>
      
  </column>
  <column>
      <columnname>materialname</columnname>
      <columnchinese>物料名称</columnchinese>
      <regcontent></regcontent>
      <datatype></datatype>
      
  </column>
  <column>
      <columnname>num</columnname>
      <columnchinese>数量</columnchinese>
      <regcontent>^(-)?(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,})?$</regcontent>
      <datatype>数字</datatype>
      
  </column>
  <column>
      <columnname>unit</columnname>
      <columnchinese>单位</columnchinese>
      <regcontent></regcontent>
      <datatype></datatype>
      
  </column>
  <column>
      <columnname>money</columnname>
      <columnchinese>金额</columnchinese>
      <regcontent>^(-)?(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,})?$</regcontent>
      <datatype>数字</datatype>
      
  </column>
  </columns>
</columnsseting>
用于匹配excel格式的xml配置内容
        /// <summary>
        /// 根据xml字典逐个单元格比较验证datatable数据格式
        /// </summary>
        /// <param name="dt">excel表格转化为的datatable</param>
        /// <param name="xmlpath">列名和列标题、格式化正则、格式类型xml配置文件路径</param>
        public static void comparecolumnformat(datatable dt, string xmlpath)
        {
            if (dt == null) return;
            xmldocument xmldoc = xmlutility.getxmldocument(xmlpath);
            xmlnode root = xmldoc.selectsinglenode("columnsseting");
            xmlnode subnode = root.selectsinglenode("columns");
            xmlnodelist subnodelist = subnode.childnodes;
            for (int i = 0; i < subnodelist.count; i++)
            {
                string colname = xmlutility.getelement(subnodelist[i], "columnname");
                string colchinese = xmlutility.getelement(subnodelist[i], "columnchinese");
                string regcontent = xmlutility.getelement(subnodelist[i], "regcontent");
                string coldatatype = xmlutility.getelement(subnodelist[i], "datatype");

                for (int j = 0; j < dt.rows.count; j++)
                {
                    if (dt.columns[i].columnname.equals(colname))
                    {
                        string curval = convert.tostring(dt.rows[j][i]);
                        regex reg = new regex(regcontent);
                        if (!reg.ismatch(curval))
                        {
                            throw new exception(string.format("当前表格中【{0}】的第【{1}】行数据【{2}】的格式不正确,应为【{3}】,\n请修正后继续。",
                                colchinese,
                                j + 1, curval, coldatatype));
                        }
                    }
                }
            }
        }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网