DioDocs for Excelでは、ワークシートにタグを構成して、セル、行、列、セル範囲、またはスプレッドシートに個人的なデータを保存できます。タグには任意のデータを保存でき、エンドユーザーに表示されないように設定できます。JSONにインポートする、またはJSONオブジェクトをエクスポートする際、タグが保持されます。
IWorksheetインタフェースのTagプロパティを使用して、ワークシートにタグを構成できます。また、セルまたはセル範囲に対して、IRangeインタフェースのTagプロパティを使用してタグを構成できます。セル範囲でタグ値が異なる場合、範囲の左上隅にあるセルのタグ値が返されます。IRangeインタフェースのEntireColumnプロパティとEntireRowプロパティ、およびTagプロパティを使用することで、列と行のタグを取得または設定できます。
クラスをインスタンス化することで、カスタムタグを構成することもできます。json I/Oをサポートするために、IJsonSerializerを実装してJsonSerializerとJsonDeserializerを提供する必要があります。
タグを使用する方法については、次のサンプルコードを参照してください。
C# |
コードのコピー
|
---|---|
public void Tags() { // ワークブックを初期化します Workbook workbook = new Workbook(); // 既定のワークシートを取得します IWorksheet worksheet = workbook.Worksheets[0]; // ワークシートにタグを追加します worksheet.Tag = "これはシートのタグです。"; // セルC1にタグを追加します worksheet.Range["C1"].Tag = "これはセルC1のタグです。"; // 4行目にタグを追加します worksheet.Range["A4"].EntireRow.Tag = "これは4行目のタグです。"; // 列Fにタグを追加します worksheet.Range["F5"].EntireColumn.Tag = "これは列Fのタグです。"; // 範囲A1:B2にタグを追加します worksheet.Range["A1:B2"].Tag = "これは範囲A1:B2のタグです。"; // ワークブックをJSONストリームにエクスポートします var jsonstr = workbook.ToJson(); // 追加のワークブックを初期化します Workbook workbook2 = new Workbook(); // ワークブックにJSONストリームをインポートします workbook2.FromJson(jsonstr); // 範囲A1:B2のタグを取得します object tag = workbook2.Worksheets[0].Range["A1:B2"].Tag; // SONストリームのエクスポートおよびインポート中にタグが保持されます Console.WriteLine(" Tag for CellRange[A1:B2] is : " + tag); } |
カスタムタグを使用する方法については、次のサンプルコードを参照してください。
C# |
コードのコピー
|
---|---|
class CustomTags { public void CustomTag() { // ワークブックを初期化します Workbook workbook = new Workbook(); // 既定のワークシートを取得します IWorksheet worksheet = workbook.Worksheets[0]; Workbook.TagJsonSerializer = new NetJsonSerializer(); // 「A1」のタグをカスタムタイプ「Student」として設定します worksheet.Range["A1"].Tag = new Student("Robin", 7); // ワークブックをJSONストリームにエクスポートします string json = workbook.ToJson(); // 追加のワークブックを初期化します Workbook workbook2 = new Workbook(); // ワークブックにJSONストリームをインポートします workbook2.FromJson(json); // タグをJObjectとして取得します object tag = workbook2.Worksheets[0].Range["A1"].Tag; // JObjectを「Student」に変換します Student student = (tag as Newtonsoft.Json.Linq.JObject).ToObject<Student>(); // JSONストリームのエクスポートおよびインポート中にタグが保持されます Console.WriteLine(" CellRange [A1]のタグのクラス: " + student); Console.WriteLine(" CellRange [A1]のタグ: " + tag); } } internal class Student { public string name; public int age; public Student(string name, int age) { this.name = name; this.age = age; } } internal class NetJsonSerializer : IJsonSerializer { public object Deserialize(string json) { return Newtonsoft.Json.JsonConvert.DeserializeObject(json) as Newtonsoft.Json.Linq.JObject; } public string Serialize(object value) { return Newtonsoft.Json.JsonConvert.SerializeObject(value); } } |