DioDocs for Excel
SpreadJSファイルのインポートとエクスポート
ファイル操作 > JSON ストリームのインポートとエクスポート > SpreadJSファイルのインポートとエクスポート

GcExcelでは、SpreadJS jsonファイルのインポートとエクスポートがサポートされます。また、SpreadJSデザイナで作成したssjsonファイルをインポートし、変更して保存することができます。

次のコードは、ssjsonファイルをロードして、xlsx形式で保存する方法を示します。

C#
コードのコピー
//新しいワークブックを作成します
Workbook workbook = new Workbook();                      
            
//SSJSONファイルを読み込みます
var stream = new System.IO.FileStream("Chart_Spread.ssjson", System.IO.FileMode.Open);
workbook.FromJson(stream);
            
//ファイルを保存します
workbook.Save("workbook_ssjson.xlsx");

メモ:SpreadJS jsonファイルをロードするとき、インデックスカラーを設定するためにIBorderインタフェースのColorIndexプロパティを使用すると、IBorderインタフェースのColorプロパティが任意のRGBカラーに設定されている場合にのみ有効な値が返されます。それ以外の場合は、無効なフラグとして-2が返されます。インデックスカラーはRGBカラーに変換できるが、RGBカラーはインデックスカラーに変換できません。


以下の機能は、SpreadJS jsonファイルをインポートとエクスポートするときにサポートされます。また、上記のサンプルコードに示されているように、FromJsonメソッドとToJsonメソッドを使用できます。

図形

GcExcelでは、図形を含むSpreadJS jsonファイルをインポートとエクスポートすることができます。図形を含むJSONファイルはこちらからダウンロードできます。

バーコード

GcExcelでは、バーコードを含むSpreadJS jsonファイルのインポートとエクスポートおよびSpreadJS jsonファイルのPDFへのエクスポートがサポートされます。ただし、PDFにエクスポートするとき、いくつかのバーコードプロパティがサポートされません。サポートされていないプロパティについては、バーコードのエクスポートを参照してください。

バーコードを含むJSONファイルはこちらからダウンロードできます。

セルボタン

セルボタンを含むSpreadJS jsonファイルのインポートとエクスポート、およびHTML、画像、PDFへのエクスポートがサポートされます。セルボタンを含むJSONファイルはこちらからダウンロードできます。


ドロップダウンオブジェクト

GcExcelでは、電卓、カラーピッカー、日付時刻ピッカーなどのドロップダウンオブジェクトを含むSpreadJS jsonファイルのインポートとエクスポートがサポートされます。ドロップダウンオブジェクトを含むJSONファイルはこちらからダウンロードできます。


データ検証のスタイル

検証スタイルを使用して、ワークシート内の無効なデータを強調表示できます。GcExcelでは、検証スタイルを含むSpreadJS jsonファイルのインポートとエクスポート、および画像、PDFへのエクスポートがサポートされます。検証スタイルを含むJSONファイルはこちらからダウンロードできます。

テキスト省略記号

SpreadJSでは、表示テキストの幅が列の幅より長い場合に、テキストを隣のセルにはみ出して表示するより、セルに省略記号(...)を表示できます。GcExcelでは、省略記号を含むSpreadJS jsonファイルのインポートとエクスポートおよびPDFへのエクスポートがサポートされます。省略記号を含むJSONファイルはこちらからダウンロードできます。

制限事項

SpreadJSでは省略記号を含むテキストのさまざまな配置が可能ですが、GcExcelでは省略記号がエクスポートされたPDFでテキストの最後にのみ表示されます。

テンプレート型セル

SpreadJSでは、ワークシート内のセル範囲をテンプレートとして指定するテンプレート型セルを作成できます。テンプレートを変更するだけで、結果のデータの表示モードと外観を変更できます。GcExcelでは、テンプレート型セルを含むSpreadJS jsonファイルのインポートとエクスポートおよびPDFへのエクスポートがサポートされます。

テンプレート型セルを含むJSONファイルはこちらからダウンロードできます。

書式文字列

SpreadJSでは、セルにテキストテンプレートの一部として数式とテキストを同時に設定する「書式文字列」機能がサポートされます。GcExcelでは、書式文字列を含むSpreadJS jsonファイルのインポートとエクスポートがサポートされます。

書式文字列を含むJSONファイルはこちらからダウンロードできます。

JSONオプション

SpreadJSでは、JSONオブジェクトとの間でカスタムデータをインポートまたはエクスポートするときに、多数のシリアル化または逆シリアル化オプションを設定できます。GcExcelは、ワークブック/ワークシートをjson文字列にエクスポートしたり、json文字列をワークブック/ワークシートにインポートしたりするときに、これらのいくつかののオプションをサポートします。以下のテーブルに、SpreadJSおよびGcExcelでサポートされているオプションについて説明します。

SpreadJS(toJSONおよびfromJSON) GcExcel(ToJSONおよびFromJSON)
シリアル化

ignoreStyle

ignoreFormula

rowHeadersAsFrozenColumns

columnHeadersAsFrozenRows

ignoreStyle

ignoreFormula

IgnoreColumnRowInfoOutOfUsedRange

IgnoreRangeOutOfRowColumnCount

逆シリアル化

ignoreStyle

ignoreFormula

frozenColumnsAsRowHeaders

frozenRowsAsColumnHeaders

doNotRecalculateAfterLoad

ignoreStyle

ignoreFormula

doNotRecalculateAfterLoad


GcExcelは、上記のプロパティをサポートしているSerializationOptionsクラスとDeserializationOptionsクラスを提供します。

次のコードは、ワークブックをJSONにシリアル化する方法を示します。

C#
コードのコピー
//jsonにワークブックをシリアル化するときにスタイルと数式を無視します
string jsonWithOption = workbook.ToJson(new SerializationOptions() { IgnoreFormula = true, IgnoreStyle = true });

workbook.FromJson(jsonWithOption);

//XLSXファイルに保存します
workbook.Save("tojsonwithoptions.xlsx");

次のサンプルコードは、JSONからワークブックを逆シリアル化する方法を示します。

C#
コードのコピー
//jsonからワークブックを逆シリアル化するときにスタイルと数式を無視します
workbook.FromJson(json, new DeserializationOptions() { IgnoreFormula = true, IgnoreStyle = true });

//XLSXファイルに保存します
workbook.Save("fromjsonwithoptions.xlsx");

使用範囲外の行と列のサイズとスタイルを維持するかどうかを選択することで、エクスポートするJSONファイルのサイズを制御できます。このために、SerializationOptionsクラスのIgnoreColumnRowInfoOutOfUsedRangeプロパティを使用できます。

次のコードは、IgnoreColumnRowInfoOutOfUsedRangeプロパティの設定がJSONファイルのサイズにどのように影響するかを示します。

C#
コードのコピー
var book = new Workbook();
IWorksheet worksheet = book.Worksheets[0];
//カスタム名スタイルを追加します
IStyle style = book.Styles.Add("testStyle1");
 
style.Font.ThemeColor = ThemeColor.Accent1;
style.Font.TintAndShade = 0.8;
style.Font.Italic = true;
style.Font.Bold = true;
style.Font.Name = "LiSu";
style.Font.Size = 28;
style.Font.Strikethrough = true;
style.Font.Subscript = true;
style.Font.Superscript = false;
style.Font.Underline = UnderlineType.Double;
 
object[,] data = new object[,]{
    {"test", "test", "test", "test" },
    {"test", "test", "test", "test" },
    {"test", "test", "test", "test" },
    {"test", "test", "test", "test" },
    {"test", "test", "test", "test" },
};
 
worksheet.Range["B2:E6"].Value = data;
worksheet.Range["A:XFD"].Style = book.Styles["testStyle1"];
worksheet.Range["A:XFD"].ColumnWidth = 20;
    
//使用範囲のみのサイズとスタイルをJSONにエクスポートします
using FileStream jsonFile = new FileStream("TestJson_true.json", FileMode.Create);
book.ToJson(jsonFile, new SerializationOptions() { IgnoreColumnRowInfoOutOfUsedRange = true }); //出力ファイルのサイズは9KBです
    
//すべてのサイズとスタイルをJSONにエクスポートします
using FileStream jsonFile2 = new FileStream("TestJson_false.json", FileMode.Create);
book.ToJson(jsonFile2, new SerializationOptions() { IgnoreColumnRowInfoOutOfUsedRange = false }); //出力ファイルのサイズは793KBです
    
//デフォルトの動作(trueオプションと同じ)
book.ToJson(new FileStream("TestJson_default.json", FileMode.Create)); //出力ファイルのサイズは9KBです

メモ:SpreadJSは複数行および複数列によるヘッダをサポートしますが、GcExcelはサポートしません。ただし、GcExcelでは以下の手順に従って、ヘッダ情報を保持できます。

  1. SpreadJSを使用してJSONファイルをエクスポートし、rowHeadersAsFrozenColumnsまたはcolumnHeadersAsFrozenRowsオプションをtrueに設定して複数の行ヘッダと列ヘッダを固定列領域に変換し、GcExcelを使用してJSONファイルをロードします。
  2. GcExcelで固定領域を操作します。
  3. GcExcelを使用してJSONファイルをエクスポートし、SpreadJSを使用してJSONファイルをロードし、frozenColumnsAsRowHeadersまたはfrozenRowsAsColumnHeadersオプションをtrueに設定して固定列領域をヘッダに変換します。

チェックボックスリストまたはラジオボタンリスト型セル

GcExcelでは、チェックボックスリストまたはラジオボタンリスト型セルを含むSpreadJSファイルのjsonインポート・エクスポートおよびPDFへのエクスポートがサポートされています。チェックボックスリストおよびラジオボタンリスト型セルを含むJSONファイルをこちらからダウンロードできます。

GcExcelでは、このセル型を追加するには、RadioButtonListCellTypeおよびCheckBoxListCellTypeクラスが提供されます。

次のサンプルコードは、GcExcelのセルにチェックボックスリスト型セルを作成します。

C#
コードのコピー
//ワークブックを初期化します
var workbook = new GrapeCity.Documents.Excel.Workbook();
IWorksheet worksheet = workbook.Worksheets[0];

CheckBoxListCellType cellType = new CheckBoxListCellType
{
    Direction = CellTypeDirection.Horizontal,
    TextAlign = CellTypeTextAlign.Right,
    IsFlowLayout = false,
    MaxColumnCount = 2,
    MaxRowCount = 1,
    HorizontalSpacing = 20,
    VerticalSpacing = 5,
};
cellType.Items.Add(new SelectFieldItem("sample1", "1"));
cellType.Items.Add(new SelectFieldItem("sample2", "2"));
cellType.Items.Add(new SelectFieldItem("sample3", "3"));
cellType.Items.Add(new SelectFieldItem("sample4", "4"));
cellType.Items.Add(new SelectFieldItem("sample5", "5"));
worksheet.Range["A1"].RowHeight = 60;
worksheet.Range["A1"].ColumnWidth = 25;
worksheet.Range["A1"].CellType = cellType;
        
//チェックボックス型リストでオプションを複数選択します
 worksheet.Range["A1"].Value = new object[,]
{
    {new object[]{"1", "3", "5" } }
};

//PDFファイルに保存します
workbook.Save("addcheckboxlistcelltype.pdf");

次のサンプルコードは、チェックボックスリスト型セルを作成し、オプションの値をカスタムオブジェクトとして設定します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new GrapeCity.Documents.Excel.Workbook();

GrapeCity.Documents.Excel.Workbook.ValueJsonSerializer = new CustomObjectJsonSerializer();
IWorksheet worksheet = workbook.Worksheets[0];

CheckBoxListCellType cellType = new CheckBoxListCellType
{
    Direction = CellTypeDirection.Horizontal,
    TextAlign = CellTypeTextAlign.Right,
    IsFlowLayout = false,
    MaxColumnCount = 2,
    MaxRowCount = 1,
    HorizontalSpacing = 20,
    VerticalSpacing = 5,
};
cellType.Items.Add(new SelectFieldItem("player1", new People { Name = "Tom", Age = 5 }));
cellType.Items.Add(new SelectFieldItem("player2", new People { Name = "Jerry", Age = 3 }));
cellType.Items.Add(new SelectFieldItem("player3", new People { Name = "Mario", Age = 6 }));
cellType.Items.Add(new SelectFieldItem("player4", new People { Name = "Luigi", Age = 4 }));
worksheet.Range["A1"].RowHeight = 60;
worksheet.Range["A1"].ColumnWidth = 25;
worksheet.Range["A1"].CellType = cellType;

worksheet.Range["A1"].Value = new object[,]
{
{new object[]{ new People { Name = "Tom", Age = 5 }, new People { Name = "Mario", Age = 6 }} }
};

//PDFファイルに保存します
workbook.Save("addcheckboxlistcelltypecustomobject.pdf");
}
class CustomObjectJsonSerializer : IJsonSerializer
{
    public object Deserialize(string json)
    {
        return Newtonsoft.Json.JsonConvert.DeserializeObject<People>(json);
    }

    public string Serialize(object value)
    {
        if (value is People)
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(value);
        }
        return null;
    }
}
class People
{
    private int age;
    private string name;

    public int Age { get => age; set => age = value; }
    public string Name { get => name; set => name = value; }

    public override bool Equals(object obj)
    {
        return obj is People people &&
               age == people.age &&
               name == people.name;
    }

    public override int GetHashCode()
    {
        return age.GetHashCode() ^ name.GetHashCode();
    }
}

次のサンプルコードは、GcExcelのセルにラジオボタンリスト型セルを作成します。

C#
コードのコピー
//ワークブックを初期化します
var workbook = new GrapeCity.Documents.Excel.Workbook();
IWorksheet worksheet = workbook.Worksheets[0];

RadioButtonListCellType cellType = new RadioButtonListCellType
{
    Direction = CellTypeDirection.Horizontal,
    TextAlign = CellTypeTextAlign.Right,
    IsFlowLayout = false,
    MaxColumnCount = 2,
    MaxRowCount = 1,
    HorizontalSpacing = 20,
    VerticalSpacing = 5,
};
cellType.Items.Add(new SelectFieldItem("sample1", "1"));
cellType.Items.Add(new SelectFieldItem("sample2", "2"));
cellType.Items.Add(new SelectFieldItem("sample3", "3"));
cellType.Items.Add(new SelectFieldItem("sample4", "4"));
cellType.Items.Add(new SelectFieldItem("sample5", "5"));
worksheet.Range["A1"].RowHeight = 60;
worksheet.Range["A1"].ColumnWidth = 25;
worksheet.Range["A1"].CellType = cellType;
worksheet.Range["A1"].Value = 1;
        
//ラジオボタン型リストでオプションを複数選択します
 worksheet.Range["A1"].Value = new object[,]
{
    {new object[]{"1", "3", "5" } }
};

//PDFファイルに保存します
workbook.Save("addradiobuttonlistcelltype.pdf");

次のサンプルコードは、ラジオボタンリスト型セルを作成し、オプションの値をカスタムオブジェクトとして設定します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new GrapeCity.Documents.Excel.Workbook();


GrapeCity.Documents.Excel.Workbook.ValueJsonSerializer = new CustomObjectJsonSerializer();
IWorksheet worksheet = workbook.Worksheets[0];

RadioButtonListCellType cellType = new RadioButtonListCellType
{
    Direction = CellTypeDirection.Horizontal,
    TextAlign = CellTypeTextAlign.Right,
    IsFlowLayout = false,
    MaxColumnCount = 2,
    MaxRowCount = 1,
    HorizontalSpacing = 20,
    VerticalSpacing = 5,
};
cellType.Items.Add(new SelectFieldItem("player1", new People { Name = "Tom", Age = 5 }));
cellType.Items.Add(new SelectFieldItem("player2", new People { Name = "Jerry", Age = 3 }));
cellType.Items.Add(new SelectFieldItem("player3", new People { Name = "Mario", Age = 6 }));
cellType.Items.Add(new SelectFieldItem("player4", new People { Name = "Luigi", Age = 4 }));
worksheet.Range["A1"].RowHeight = 60;
worksheet.Range["A1"].ColumnWidth = 25;
worksheet.Range["A1"].CellType = cellType;

worksheet.Range["A1"].Value = new object[,]
{
{new People { Name = "Tom", Age = 5 } }
};

//PDFファイルに保存します
workbook.Save("addradiobuttoncelltypecustomobject.pdf");
}

class CustomObjectJsonSerializer : IJsonSerializer
{
    public object Deserialize(string json)
    {
        return Newtonsoft.Json.JsonConvert.DeserializeObject<People>(json);
    }

    public string Serialize(object value)
    {
        if (value is People)
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(value);
        }
        return null;
    }
}
class People
{
    private int age;
    private string name;

    public int Age { get => age; set => age = value; }
    public string Name { get => name; set => name = value; }

    public override bool Equals(object obj)
    {
        return obj is People people &&
               age == people.age &&
               name == people.name;
    }

    public override int GetHashCode()
    {
        return age.GetHashCode() ^ name.GetHashCode();
    }
}

セルパディングとラベル

GcExcelでは、セルパディングとラベルを含むSpreadJS jsonファイルのインポートとエクスポートおよびPDFへのエクスポートがサポートされます。セルパディングとラベルを含むJSONファイルはこちらこちらからダウンロードできます。

また、セルパディングおよびラベルをサポートするために、CellPaddingおよびMarginクラス、ILabelOptionsインタフェース、LabelAlignmentおよびLabelVisibility列挙体が提供されます。

次のサンプルコードは、ワークシートにセルパディングとラベルを追加する方法を示します。

C#
コードのコピー
//ワークブックを初期化します
Workbook workbook = new Workbook();
//シートを取得します
IWorksheet worksheet = workbook.Worksheets[0];
//行の高さを設定します
worksheet.Range["A:A"].RowHeight=40;
//列幅を設定します
worksheet.Range["A:A"].ColumnWidth=25;
//ウォーターマークを設定します
worksheet.Range["A1"].Watermark="GcExcel JAVA";
//セルパディングを設定します
worksheet.Range["A1"].CellPadding=new CellPadding(50, 0, 0, 0);
//ラベルオプションを設定します
worksheet.Range["A1"].LabelOptions.Visibility = LabelVisibility.visible;
worksheet.Range["A1"].LabelOptions.ForeColor = Color.Green;
worksheet.Range["A1"].LabelOptions.Margin=new Margin(15, 0, 0, 0);
worksheet.Range["A1"].LabelOptions.Font.Size=14;
worksheet.Range["A1"].LabelOptions.Font.Name="Calibri";
worksheet.Range["A1"].Borders.LineStyle=BorderLineStyle.Thin;

//PDFファイルに保存します
workbook.Save("CellPaddingAndLabels.pdf");

数値の表示モード

MS Excelでは、数値や日付が使用可能なセル幅に収まらない場合、セル値をマスクしてセルに「####」と表示します。この問題を解決するために、GcExcelはNumbersFitMode列挙型を提供し、セルの幅が値全体を表示するのに十分でない場合に、数値や日付の値全体をマスクするか表示するかを選択できるようにしました。この列挙型はIWorkbookView.NumbersFitModeプロパティにてアクセスすることができ、値として「Mask」および「Overflow」があります。「####」を表示しないようにするには、プロパティを「Overflow」に設定し、あふれた値を隣接する空白セルにオーバーフローして表示するようにします。なお、セル自体や隣接セルが結合されている場合や隣接セルに値がある場合は、オーバーフローは発生せず値の一部だけが表示されます。

NumbersFitMode = Mask NumbersFitMode = Overflow
C#
コードのコピー
//NumbersFitModeを「Overflow」に設定します
workbook.BookView.NumbersFitMode = GrapeCity.Documents.Excel.NumbersFitMode.Overflow;

オーバーフローの動作と方向は、セル値の水平方向の配置と方向によって変化します。次の表は、使用可能なセル幅よりも長い値の水平方向の配置と方向を変えて、オーバーフロー動作を示したものです。

水平配置・方向 オーバーフロー動作
一般的または右揃え
左揃え
中央揃え
方向がゼロ以上
方向がゼロ未満
メモ:MS ExcelはNumbersFitModeをサポートしていないので、Excelにワークシートをエクスポートする際、IWorkbookView.NumbersFitMode = Overflowは有効になりません。

背景画像

GcExcelでは、背景画像を含むSpreadJS jsonファイルのインポートとエクスポートおよびPDFへのエクスポートがサポートされます。背景画像を含むJSONファイルはこちらからダウンロードできます。

また、背景画像を追加するために、IWorksheetインタフェースにBackgroundPicturesプロパティが提供されます。詳細については、背景画像への対応を参照してください。

次のサンプルコードは、ワークシートに背景画像を設定する方法を示します。

C#
コードのコピー
//ワークブックを初期化します
var workbook = new GrapeCity.Documents.Excel.Workbook();

IWorksheet worksheet = workbook.Worksheets[0];

FileStream stream = File.Open(@"Logo.png", FileMode.Open, FileAccess.Read);

//背景画像を追加します
IBackgroundPicture picture = worksheet.BackgroundPictures.AddPictureInPixel(stream, ImageType.PNG, 10, 10, 500, 370);
//画像レイアウトを設定します
picture.BackgroundImageLayout = ImageLayout.Zoom;

//オプションを設定します
workbook.ActiveSheet.PageSetup.PrintGridlines = true;

//PDFファイルに保存します
workbook.Save("backgroundimage.pdf");

次のサンプルコードは、JSONから背景画像をインポートし、PDFドキュメントにエクスポートする方法を示します。

C#
コードのコピー
Workbook workbook = new Workbook();

string ssjson = string.Empty;
try
{
    var jsonFile = @"D:\bgimage.ssjson";

    using (StreamReader sr = System.IO.File.OpenText(jsonFile))
    {
        ssjson = sr.ReadToEnd();
    }
}
catch (Exception e)
{
    Console.WriteLine(e);
}

//ssjsonからインポートします
workbook.FromJson(ssjson);

//オプションを設定します
workbook.ActiveSheet.PageSetup.PrintGridlines = true;

//PDFにエクスポートします
workbook.Save("bgimage.pdf");

制限事項

背景色

GcExcelでは、背景色を含むSpreadJS jsonファイルのインポートとエクスポートおよびPDFへのエクスポートがサポートされます。背景色を含むJSONファイルはこちらからダウンロードできます。

また、背景色を設定するために、IWorkbookViewインタフェースにBackColorプロパティとGrayAreaBackColorプロパティが提供されます。

次のサンプルコードは、すべてのワークシートに背景色を設定する方法を示します。

C#
コードのコピー
//ワークブックを初期化します
var workbook = new GrapeCity.Documents.Excel.Workbook();

//背景色を設定します
workbook.BookView.BackColor = Color.LightSkyBlue;
workbook.BookView.GrayAreaBackColor = Color.Gray;

//値をセルに設定します
IWorksheet worksheet = workbook.ActiveSheet;
worksheet.Range["H20"].Value = "The text";

//ページオプションを設定します
worksheet.PageSetup.PrintGridlines = true;
worksheet.PageSetup.PrintHeadings = true;

//PDFにエクスポートします
workbook.Save("backgroundcolor.pdf");

制限事項

SpreadJSでは、背景画像は背景色を上書きします。したがって、PDFドキュメントにエクスポートするときに背景画像を削除する必要があります。

行と列の数

GcExcelでは、jsonファイルのインポート・エクスポートを実行する際、ワークシートの行と列の数を設定できます。IWorksheetインタフェースのRowCountプロパティとColumnCountプロパティを使用して行と列の数を設定します。また、SerializationOptionsクラスのIgnoreRangeOutOfRowColumnCountプロパティを使用して、指定された行数と列数の範囲外のデータをエクスポートするかどうかを選択できます。このプロパティのデフォルト値はfalseであり、指定された行数と列数の範囲外のデータをJSON形式でエクスポートします。

次のサンプルコードは、ワークシートに行と列の数を設定し、JSONファイルにエクスポートします。

C#
コードのコピー
IWorkbook workbook = new Workbook();
IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Range["A1"].Value = 1;
worksheet.Range["A11"].Value = 2;

//ワークシートの行数と列数を変更します
worksheet.RowCount = 10;
worksheet.ColumnCount = 10;

//JSONファイルに保存します
//SpreadJSでこのJSONファイルを開いて、行数が10行、列数が10列であることを確認します
FileStream file = new FileStream("RowColumnCount.json", FileMode.Create);
workbook.ToJson(file, new SerializationOptions { IgnoreRangeOutOfRowColumnCount = true});

制限事項

行数と列数の設定は、JSONファイルのインポートとエクスポートでのみサポートされますが、ExcelまたはPDFファイルへエクスポートする場合にサポートされていません。

タブストリップの位置設定

GcExcelでは、JSONファイルのインポートとエクスポートを実行する際、タブストリップの位置、幅、新しいタブボタンの表示状態、ワークシート名などのさまざまなプロパティを設定することができます。IWorkbookインタフェースのTabNavigationVisible、NewTabVisible、AllowSheetReorder、TabStripWidth、TabStripPositionなどのプロパティで実現できます。

次のサンプルコードは、タブストリップの位置を左側に設定し、他のタブストリップのプロパティを設定します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new Workbook();
workbook.Worksheets.Add();

workbook.BookView.AllowSheetReorder = false;
workbook.BookView.TabEditable = false;
workbook.BookView.TabNavigationVisible = false;
workbook.BookView.TabStripPosition = SpreadJSTabStripPosition.Left;
workbook.BookView.TabStripWidth = 150;
workbook.BookView.NewTabVisible = false;
using var file = new FileStream("sheettabposition.json", FileMode.Create);
workbook.ToJson(file);

チェックボックス型セル、チェックボックスリスト型セル、ラジオボックスリスト型セルのサイズ設定

GcExcelでは、JSONファイルのインポートとエクスポートを実行する際、チェックボックス型セル、チェックボックスリスト型セル、およびラジオボックスリスト型セルのサイズ設定を行うことができます。サイズを指定するには、CheckBoxCellTypeCheckBoxListCellType、およびRadioButtonListCellTypeクラスのBoxSizeプロパティとAutoBoxSizeプロパティを使用します。BoxSizeプロパティは、セルのサイズを設定します。AutoBoxSizeプロパティは、ボックスのサイズがフォントサイズに応じて自動的に変更されるかどうかを指定します。

次のサンプルコードは、チェックボックスリスト型セルのBoxSizeとAutoBoxSizeプロパティを設定します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new Workbook();
IWorksheet worksheet = workbook.Worksheets[0];

CheckBoxListCellType cellType = new CheckBoxListCellType
{
    Direction = CellTypeDirection.Horizontal,
    TextAlign = CellTypeTextAlign.Right,
    IsFlowLayout = false,
    MaxColumnCount = 2,
    MaxRowCount = 1,
    HorizontalSpacing = 20,
    VerticalSpacing = 5,
    BoxSize = 40,
    AutoBoxSize = true
};
cellType.Items.Add(new SelectFieldItem("sample1", "1"));
cellType.Items.Add(new SelectFieldItem("sample2", "2"));
cellType.Items.Add(new SelectFieldItem("sample3", "3"));
cellType.Items.Add(new SelectFieldItem("sample4", "4"));
cellType.Items.Add(new SelectFieldItem("sample5", "5"));
worksheet.Range["A1:C3"].ColumnWidth = 25;
worksheet.Range["A1:C3"].CellType = cellType;
worksheet.Range["A1:C3"].Value = new object[,]
{
{new object[]{"1", "3", "5" } }
};
using var file = new FileStream("checkboxlistsize.json", FileMode.Create);
workbook.ToJson(file);
}

画像のURLの取得

IPictureFormatインタフェースのurlプロパティを使用して、JSONファイルから画像のURLを取得できます。このURLはバイト配列に変換され、IPictureFormatインタフェースのFillプロパティを使用して画像に設定されます。これにより、画像のURLを含むjsonファイルをExcelまたはPDFファイルにエクスポートできます。

次のサンプルコードは、JSONファイルから画像のURLを取得し、ExcelおよびPDFファイルにエクスポートする方法を示します。

C#
コードのコピー
static void Main(string[] args)
{
    Workbook workbook = new Workbook();
    workbook.Open("Picture.json");
    var pic = workbook.ActiveSheet.Shapes[0];
    //JSONファイルから画像のURLを取得します
    string url = pic.PictureFormat.Url;
    byte[] picByte = GetPictureFromUrl(url);
    //画像のバイト配列を設定します
    pic.PictureFormat.Fill = picByte;
    //PDFとExcelファイルに保存します
    workbook.Save("PicturePDF.pdf");
    workbook.Save("PictureExcel.xlsx");
}

private static byte[] GetPictureFromUrl(string url)
{
    WebClient wc = new WebClient();
    byte[] imageBytes = wc.DownloadData(url);
    return imageBytes;
}