DioDocs for Excelでは、IRangeインタフェースのValueプロパティを使用して、カスタムオブジェクトまたはその1Dおよび2D配列を範囲に設定できます。ただし、カスタムオブジェクトはExcel入出力ではサポートされていません。
カスタムオブジェクトで以下の演算子と数式を使用する場合は、前述のメソッドを使用する必要があります。
演算子 | = | Object.Equalsを使用します。 |
<> | Not =を使用します。 | |
数式 | EXACT | Object.ReferenceEqualsを使用します。 |
TEXT | Convert.ToStringを使用します。 |
次のバーコード式は、カスタムオブジェクトを処理できます。
次のサンプルコードは、カスタムオブジェクトの2D配列を範囲に設定する方法を示します。
C# |
コードのコピー
|
---|---|
//新しいワークブックを作成します var workbook = new GrapeCity.Documents.Excel.Workbook(); var activeSheet = workbook.ActiveSheet; IRange a1 = activeSheet.Range["A1"]; var dict = new Dictionary<string, object>() { {"TempData1", 1}, {"TempData2", "Temp value 2"}, {"TempData3", 3}, {"TempData4", "Temp value 4"} }; //一時データを範囲に設定します a1.Value = dict; //後でカスタムオブジェクトを表示します var obj = (IReadOnlyDictionary<string, object>)a1.Value; var row = 1; foreach (var kv in obj) { activeSheet.Range["B" + row].Value = kv.Key; activeSheet.Range["C" + row].Value = kv.Value; row += 1; } //調整 activeSheet.Columns.AutoFit(); activeSheet.Columns[0].Hidden = true; //PDFファイルに保存します workbook.Save("setcustomrangevalue.pdf"); |
次のサンプルコードは、JSONシリアル化の動作をオーバーライドする方法を示します。
C# |
コードのコピー
|
---|---|
//JSONコンバータークラス class JsonNetConverter<T> : IJsonSerializer { public static JsonNetConverter<T> Instance { get; } = new JsonNetConverter<T>(); public object Deserialize(string json) { var jobj = JObject.Parse(json); if (jobj.TryGetValue("typeName", out JToken jtok) && jtok is JValue jval && jval.Type == JTokenType.String && (string)jval.Value == typeof(T).Name) { return JsonConvert.DeserializeObject<T>(json); } return null; } public string Serialize(object value) { var jObj = JObject.FromObject(value); jObj.Add("typeName", new JValue(typeof(T).Name)); return jObj.ToString(Newtonsoft.Json.Formatting.None); } } //クラスを終了します public void overrideJSON() { //使用法 Workbook.ValueJsonSerializer = JsonNetConverter<ValueWithUnit>.Instance; } |