通过遍历类向Aspose.cell模板中插入数据
/// <summary>
/// 遍历类所有字段
/// </summary>
/// <param name="designer">aspose.cell中WorkbookDesigner对象</param>
/// <param name="jObject">Newtonsoft.Json 中 JObject.FromObject(entity)</param>
/// <param name="className">当前jObject名称,默认 t</param>
public static void ForeachEntityProperties(WorkbookDesigner designer, JObject jObject, string className = "t")
{
foreach (var item in jObject)
{
string propertyName = item.Key;
var propertyValue = item.Value;
if (item.Value.Type == JTokenType.String)
{
designer.SetDataSource(className + "." + propertyName, propertyValue);
}
else if (item.Value.Type == JTokenType.Array)
{
var arr = propertyValue as JArray;
designer.SetDataSource(ToDataTable(arr, propertyName));
}
else if (item.Value.Type == JTokenType.Object)
{
ForeachEntityProperties(designer, propertyValue as JObject, propertyName);
}
}
}
/// <summary>
/// 将JArray转换为DataTable
/// </summary>
/// <param name="jArray"></param>
/// <param name="tableName">DataTable表名称 默认 dt</param>
/// <returns></returns>
public static DataTable ToDataTable(JArray jArray, string tableName = "dt")
{
DataTable result = new DataTable(tableName);
if (jArray != null && jArray.Count > 0)
{
var jObject = jArray[0] as JObject;
if (jObject != null)
foreach (var item in jObject)
{
result.Columns.Add(item.Key, typeof(string));
}
foreach (var t in jArray)
{
ArrayList tempList = new ArrayList();
var items = t as JObject;
if (items != null)
foreach (var item in items)
{
object obj = item.Value;
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
通过遍历类向Aspose.cell模板中插入数据的更多相关文章
- Thymeleaf+SpringMVC,如何从模板中获取数据
Thymeleaf+SpringMVC,如何从模板中获取数据 在一个典型的SpringMVC应用中,带@Controller注解的类负责准备数据模型Map的数据和选择一个视图进行渲染.这个模型Map对 ...
- POI往word模板中写入数据
转: POI往word模板中写入数据 2018年03月24日 16:00:22 乄阿斗同學 阅读数:2977 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn ...
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据
第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...
- html-webpack-plugin在html中插入数据
html-webpack-plugin在html中插入数据 <!DOCTYPE html> <html> <head> <meta charset=" ...
- 使用C#向ACCESS中插入数据
使用C#向ACCESS中插入数据 1.创建并打开一个OleDbConnection对象 string strConn = " Provider = Microsoft.Jet.OLEDB ...
- 触发器修改后保存之前的数据 表中插入数据时ID自动增长
create or replace trigger t before update on test5 for each rowbegin insert into test55 values (:old ...
- Hive通过查询语句向表中插入数据注意事项
最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额 ...
- 向Oracle数据库中插入数据出错:ORA-01036 无效的变量名或数据
向Oracle数据库中插入数据出错: 经过排查,因为Update数据时没有出错,所以OracleHelper没有问题: 看异常信息提示:无效的变量和数据,应该是SQL语句的问题,调试时所传的实例Use ...
随机推荐
- javascript总结36:DOM-点击按钮切换图片案例
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- OpenSSH免密码登录SSH2
SSH2免密码登录OpenSSHhttp://blog.csdn.net/aquester/article/details/23836299 两个SSH2间免密码登录http://blog.csdn. ...
- (转)走进AngularJs(六) 服务
原文地址:http://www.cnblogs.com/lvdabao/p/3464015.html 今天学习了一下ng的service机制,作为ng的基本知识之一,有必要做一个了解,在此做个笔记记录 ...
- 9.29学习的js基础
js基础 1.三种js引入方式 a).<input type="button" value="点击事件" onClick="documen ...
- 关于iReport中纸张的大小 换算
在iReprot里中进行报表设计时 第一步先确定纸张的大小 如A4纸 直接选就行了 A2 A3一样的,但还会在这种情况这种纸没有选择的怎么办? 比如 那种代小孔的纸 279*241m ...
- ARM启动代码中_main 与用户主程序main()的区别
1.1 问题描述 __main函数的作用是什么呀?1.2 问题剖析 __main函数是C/C++运行时库的一个函数,嵌入式系统在进入应用主程序之前必须有一个初始化的过程,使用__m ...
- 大数据hadoop分布式系统
1>hadoop简介: Hadoop是一个开发和运行处理大规模数据的软件平台,是Apache的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行 分布式计算 ...
- 谷歌浏览器插件开发入门-官方版Helloworld详解
目录: 需求 原理 实现步骤: 一个空的插件 一个可以设置一种背景色的插件(可以设置百度首页的背景色为绿色) 一个可以设置多种背景色的插件 需求: 插件可以改变特定网址的背景颜色. 原理: 将各种ht ...
- Maven项目常见错误
一.Cannot change version of project facet Dynamic Web Module to 3.0. 和 One or more constraints have n ...
- Linq转换操作之OfType,Cast,AsEnumerable,ToLookup源码分析
Linq转换操作之OfType,Cast,AsEnumerable,ToLookup源码分析 一:Tolookup 1. 从方法的注解上可以看到,ToLookup也是一个k,v的形式,那么问题来了,它 ...