zoukankan      html  css  js  c++  java
  • XCode读取Excel数据(适用于任何数据库)

    虽然是充血模型,虽然是强类型,XCode同样支持遍历任何数据库结构,并以强类型(相对于DataSet等字典访问)方式读取数据。

    要遍历数据库结构是很容易的事情,绝大多数Orm都支持。

    但是在没有实体类的情况下以强类型方式读取数据,就稍微有些复杂。XCode的原理是为每张表动态创建继承自Entity<>的实体类,然后通过接口来操作实体类。

    代码中有了快速反射,虽然没有性能损耗,但是用起来挺别扭的,这里说明了XCode对于实体类元数据的动态访问支持还不够。

    // 添加一个连接
    DAL.AddConnStr("test", "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=Test.xls;" + "Extended Properties=Excel 8.0;", null, null);
    DAL dal = DAL.Create("test");
    // 遍历所有表
    foreach (XTable table in dal.Tables)
    {
        Console.WriteLine("表 {0}:", table.Name);
    
        // 创建一个实体操作者,这里会为数据表动态生成一个实体类,并使用CodeDom编译
        IEntityOperate op = dal.CreateOperate(table.Name.Replace("$", null));
    
        // 因为动态生成代码的缺陷,表名中的$已经被去掉,并且Excel的查询总必须给表名加上方括号,还是因为有$
        // 下面通过快速反射设置Meta.TableName
        Type type = op.GetType();
        type = typeof(Entity<>.Meta).MakeGenericType(type);
        PropertyInfoX.Create(type, "TableName").SetValue("[" + table.Name + "]");
    
        // 如果没有记录,跳过
        if (op.FindCount() < 1) continue;
    
        // 输出表头
        foreach (FieldItem item in op.Fields)
        {
            if (item.Name.StartsWith("F")) break;
    
            Console.Write("{0}\t", item.Name);
        }
        Console.WriteLine();
    
        // 查找所有数据
        EntityList<IEntity> list = op.FindAll();
        //DataSet ds = list.ToDataSet();
    
        // 输出数据
        foreach (IEntity entity in list)
        {
            foreach (FieldItem item in op.Fields)
            {
                if (item.Name.StartsWith("F")) break;
    
                Console.Write("{0}\t", entity[item.Name]);
            }
            Console.WriteLine();
        }
    }
    
  • 相关阅读:
    STL实现的底层数据结构简介
    C++ STL中Map的按Key排序和按Value排序
    algorithm库介绍之---- stable_sort()方法 与 sort()方法 .
    git取消更改 恢复版本命令
    unbuntu下清理磁盘空间
    x265编码命令
    SQLServer数据库获取重复记录中日期最新的记录
    牛逼哄哄的 Lambda 表达式,简洁优雅就是生产力!
    哎!又要过年了,程序员最怕问到什么?
    swagger 使用指南
  • 原文地址:https://www.cnblogs.com/nnhy/p/2013757.html
Copyright © 2011-2022 走看看