通过遍历类向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 ...
随机推荐
- [GO]通过结构体生成json
package main import ( "encoding/json" "fmt" ) type IT struct { //一定要注意这里的成员变量的名字 ...
- STS 闪退
# # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ILLEGAL_INSTRUCTI ...
- toolbox类
新建Qt 应用,项目名称为“c”,基类选择“QWidget”,取消“创建界面”复选框的选中状态. 添加该工程的提供主要显示界面的函数所在的文件,在“c”项目名上单击鼠标右键,在弹出的快捷菜单中选择“ ...
- Android PendingIntent小结
官方文档的解释 A description of an Intent and target action to perform with it. 注意有一个target action,既Pen ...
- JW Player开始播放和结束播放事件的捕获
项目中使用到jwPlayer,需要在用户开始播放盒结束播放的时候触发一些事件,所以研究JWPlayer. <script type="text/javascript"> ...
- Using Lucene's new QueryParser framework in Solr
Sometime back, I described how I built (among other things) a custom Solr QParser plugin to handle P ...
- JavaScript - this详解 (三)
闭包 this 执行上下文决定了变量作用域 而闭包,它其实是一种决策,是一种模式,让我们可以灵活的改变变量作用域. 按惯例,上栗子 var global = 'global';function out ...
- GitHub操作总结
GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者:万境绝尘 转载请注明出处:http://blog.csdn.net/shulianghan/article/details/188 ...
- 超级简单的例子说明JAVA PACKET CLASS 和变量之间的关系
一.包PACKET 就是一个文件夹,包下的CLASS互相访问如一个文件. 二.class内部相当于一个DELPHI的calss,静态函数(static )只能访问静态函数. package Mainp ...
- Android-AIDL调用Android操作系统Music的方式来播放音乐
Android操作系统Music源码修改:把包名,各种命名都修改成自己的 修改Android操作系统Music源码,把后台播放核心服务对外暴漏: <!-- 核心服务 --> <!-- ...