zoukankan      html  css  js  c++  java
  • 通过遍历类向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;

    }

  • 相关阅读:
    C# extern关键字的用法
    C#自定义集合类(二)
    C#自定义集合类(一)
    LINQ中交集、并集、差集、去重(十四)
    LINQ中转换操作符(十三)
    Oracle实现连乘和求和
    适配器模式
    HTTP网络协议与手写Web服务容器
    代理模式
    设计模式的几条家规
  • 原文地址:https://www.cnblogs.com/cb521413/p/9441493.html
Copyright © 2011-2022 走看看