XCode读取Excel数据(适用于任何数据库)
时间:2022-04-21
本文章向大家介绍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();
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mac怎么设置docker国内镜像源来加速下载?
- 适合数据分析面试笔试入门的编程题
- 女同事问狗哥什么是线程池的阻塞队列?
- BAT某厂数据分析终面面经
- 通过常见的业务掌握SQL高级功能
- 滴滴出行数据分析师面试经验
- 如何制作推论统计分析报告
- 全局唯一 ID 服务的分布式ID生成系统
- SpringBoot 国际化实现跨地区的多语言切换
- MySQL 死锁产生原因和解决方法
- 手把手教你ShardingSphere和Mybatis拦截器实现特殊字段动态切换加密
- Swagger3.0官方starter诞生,可以扔掉那些野生starter了
- Prometheus 入门教程(一):Prometheus 快速入门
- 开发|ShiroConfig实现基础拦截
- 推荐几个 VS Code 扩展、主题和字体