DioDocs for Excelは、範囲テンプレートとして機能するワークシートのセル範囲を指定することができるテンプレート型セルをサポートしています。範囲テンプレートは単一のセルと見なされ、必要に応じてセルまたはセル範囲に適用することができます。範囲テンプレートへのデータは、データソースから読み込むことができます。
この機能は、以下の画像に表示されているように特定のデータ範囲を同一の構造で表示したい場合、複数の範囲に同じスタイルを何度も設定する必要がないため、特に便利です
上記の範囲テンプレートをセル範囲「A1:B2」に適用し、データソースからデータを読み込むと、次のような表示になります。
テンプレート型セルを作成するには、次の手順を実行する必要があります。
次のサンプルコードは、テンプレート型セルを作成する方法を示します。
C# |
コードのコピー
|
---|---|
//新しいワークブックを作成します var workbook = new GrapeCity.Documents.Excel.Workbook(); GrapeCity.Documents.Excel.Workbook.ValueJsonSerializer = new CustomObjectJsonSerializer(); var sheet1 = workbook.ActiveSheet; //手順1)範囲テンプレートを設計するためのワークシートを作成します var sheet2 = workbook.Worksheets.Add(); //手順2)データを構成します var record1 = new PersonalAssets { Name = "Peyton", Savings = 25000, Shares = 55000, Stocks = 15000, House = 250000, Bonds = 11000, Car = 7500 }; var record2 = new PersonalAssets { Name = "Icey", Savings = 30000, Shares = 45000, Stocks = 25000, House = 20000, Bonds = 18000, Car = 75000 }; var record3 = new PersonalAssets { Name = "Walter", Savings = 20000, Shares = 4000, Stocks = 95000, House = 30000, Bonds = 10000, Car = 56000 }; var record4 = new PersonalAssets { Name = "Chris", Savings = 70000, Shares = 85000, Stocks = 35000, House = 20000, Bonds = 15000, Car = 45000 }; //セルのバインドパスを設定します sheet2.Range["A1:C1"].Merge(); sheet2.Range["A1:C1"].HorizontalAlignment = HorizontalAlignment.Center; sheet2.Range["A1:C1"].VerticalAlignment = VerticalAlignment.Center; sheet2.Range["A1"].ColumnWidthInPixel = 100; sheet2.Range["A1"].BindingPath = "Name"; sheet2.Range["A1"].Font.Name = "Arial"; sheet2.Range["A1"].Font.Size = 12; sheet2.Range["1:1"].RowHeight = 30; sheet2.Range["A2"].Value = "資産の種類"; sheet2.Range["B2"].Value = "金額"; sheet2.Range["C2"].Value = "割合"; sheet2.Range["A3"].Value = "節約"; sheet2.Range["A3"].Interior.Color = Color.FromArgb(145, 159, 129); sheet2.Range["B3"].BindingPath = "Savings"; sheet2.Range["C3"].Formula = "=B3/B9"; sheet2.Range["A4"].Value = "持株"; sheet2.Range["A4"].Interior.Color = Color.FromArgb(215, 145, 62); sheet2.Range["B4"].BindingPath = "Shares"; sheet2.Range["C4"].Formula = "=B4/B9"; sheet2.Range["A5"].Value = "株式"; sheet2.Range["A5"].Interior.Color = Color.FromArgb(206, 167, 34); sheet2.Range["B5"].BindingPath = "Stocks"; sheet2.Range["C5"].Formula = "=B5/B9"; sheet2.Range["A6"].Value = "住宅"; sheet2.Range["A6"].Interior.Color = Color.FromArgb(181, 128, 145); sheet2.Range["B6"].BindingPath = "House"; sheet2.Range["C6"].Formula = "=B6/B9"; sheet2.Range["A7"].Value = "債券"; sheet2.Range["A7"].Interior.Color = Color.FromArgb(137, 116, 169); sheet2.Range["B7"].BindingPath = "Bonds"; sheet2.Range["C7"].Formula = "=B7/B9"; sheet2.Range["A8"].Value = "自動車"; sheet2.Range["A8"].Interior.Color = Color.FromArgb(114, 139, 173); sheet2.Range["B8"].BindingPath = "Car"; sheet2.Range["C8"].Formula = "=B8/B9"; sheet2.Range["A9"].Value = "合計"; sheet2.Range["B9:C9"].Merge(); sheet2.Range["B9:C9"].HorizontalAlignment = HorizontalAlignment.Center; sheet2.Range["B9:C9"].NumberFormat = "¥###0_);(¥###0)"; sheet2.Range["B9:C9"].Formula = "=SUM(B3:B8)"; sheet2.Range["B3:B8"].NumberFormat = "¥###0_);(¥###0)"; sheet2.Range["C3:C8"].NumberFormat = "0.00%"; sheet2.Range["C3:C8"].FormatConditions.AddDatabar(); workbook.Save("addrangetemplatecelltype.pdf"); //データソースを設定します sheet1.Range["A:B"].ColumnWidthInPixel = 300; sheet1.Range["1:2"].RowHeightInPixel = 200; sheet1.Range["A1"].Value = record1; sheet1.Range["B1"].Value = record2; sheet1.Range["A2"].Value = record3; sheet1.Range["B2"].Value = record4; //手順3)範囲テンプレートを作成します var rangeTemplateCelltype = new RangeTemplateCellType(sheet2); //セル型を「A1:B2」に適用します sheet1.Range["A1:B2"].CellType = rangeTemplateCelltype; //PDFファイルに保存します workbook.Save("addrangetemplatecelltype.pdf"); } class CustomObjectJsonSerializer : IJsonSerializer { public object Deserialize(string json) { return Newtonsoft.Json.JsonConvert.DeserializeObject(json); } public string Serialize(object value) { return Newtonsoft.Json.JsonConvert.SerializeObject(value); } } class PersonalAssets { public string Name; public int Savings; public int Shares; public int Stocks; public int House; public int Bonds; public int Car; } |
使用制限
Excelではテンプレート型セルはサポートされていないので、.xlsxファイルとして保存する場合このセル型は失われます。