DioDocs for Excel
DioDocs for Excel
図形形式と図形テキストのカスタマイズ
機能 > 図形と画像 > 図形形式と図形テキストのカスタマイズ

DioDocs for Excelでは、図形やピクチャーを追加できるだけでなく、図形形式と図形テキストをカスタマイズすることもできます。ユーザーは、塗りつぶしの色を変更したり、3次元の向きを書式設定したり、図形の周りに線を追加したりすることで、Excelファイル内の図形の外観を向上させることができます。

図形形式

DioDocs for Excel では、3 つの方法で図形形式をカスタマイズできます。すなわち、IFillFormatインタフェースのプロパティとメソッドを使用して塗りつぶしの形式を設定する方法、ILineFormatインタフェースのプロパティとメソッドを使用して図形の線を構成する方法、および IThreeDFormatインタフェースのプロパティとメソッドを使用して、挿入された図形に 3D 形式を適用する方法です。

単色塗りつぶし

単色塗りつぶしで図形を書式設定するには、まず IFillFormat インタフェースのSolidメソッドを使用して塗りつぶし形式を指定してから、ColorプロパティとTransparencyプロパティを設定して、図形の塗りつぶし色と透過度をそれぞれ設定します。

単色塗りつぶしで図形を塗りつぶす方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//単色塗りつぶし
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Balloon, 10, 10, 100, 100);
IColorFormat color = shape.Fill.Color;
color.RGB = Color.Red;
shape.Fill.Solid();

グラデーション塗りつぶし

グラデーション塗りつぶしでは、2つ以上の色を混ぜ合わせることで、3 次元的な外観を実現することができます。まず、IFillFormat インタフェースのOneColorGradientメソッド、TwoColorGradientメソッド、またはPresetGradientメソッドを使用して、図形塗りつぶしをグラデーション塗りつぶしに設定する必要があります。次に、IFillFormat インタフェースのGradientStopsプロパティ、RotateWithObjectプロパティ、およびGradientAngleプロパティを使用して、グラデーションストップの挿入/削除/変更、図形と塗りつぶしスタイルの回転の設定、グラデーション塗りつぶしの角度の設定を行います。

DioDocs for Excelでは、線状、放射、四角、パスの4種類のグラデーション塗りつぶしがサポートされています。 デフォルトでは、「線状」に設定されています。

PresetGradientメソッドを使用してグラデーション塗りつぶしで図形を塗りつぶす方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//グラデーション塗りつぶし
IShape shape1 = worksheet.Shapes.AddShape(AutoShapeType.Heart, 120, 10, 100, 100);
shape1.Fill.PresetGradient(GradientStyle.Vertical, 3, PresetGradientType.Silver);
shape1.Fill.RotateWithObject = false;

TwoColorGradientメソッドを使用してグラデーション塗りつぶしで図形を塗りつぶす方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//ワークブックを初期化します
Workbook workbook = new Workbook();
//既定のワークシートを取得します
IWorksheet worksheet = workbook.Worksheets[0];

//図形を追加します
IShape rectangle = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 20, 20, 300, 100);

//2色のグラデーション塗りつぶしを初期化します
rectangle.Fill.TwoColorGradient(GradientStyle.Horizontal, 1);

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

放射、四角、またはパスのグラデーションの塗りつぶしを設定するには、TwoColorGradientGradientPathTypeメソッドを設定する必要があります。

「放射」のグラデーション塗りつぶしで図形を塗りつぶす方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//ワークブックを初期化します
Workbook workbook = new Workbook();
//既定のワークシートを取得します
IWorksheet worksheet = workbook.Worksheets[0];

//図形を追加します
IShape rectangle = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 20, 20, 300, 100);

//2色のグラデーション塗りつぶしを初期化します  
rectangle.Fill.TwoColorGradient(GradientStyle.FromCenter, 1);

//グラデーションのパスタイプを設定します
rectangle.Fill.GradientPathType = PathShapeType.Radial;

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

パターン塗りつぶし

パターン塗りつぶしでは、まず図形塗りつぶしをパターン塗りつぶしに設定する必要があります。それには、IFillFormat インタフェースのPatternedメソッドを使用します。その後、IFillFormat インタフェースのColorプロパティとPatternColorプロパティを使用して、背景色とパターン色を設定します。

パターン塗りつぶしで図形を塗りつぶす方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//パターン塗りつぶし
IShape shape2 = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 240, 10, 100, 100);
shape2.Fill.Patterned(GrapeCity.Documents.Excel.Drawing.PatternType.Percent10);
shape2.Fill.Color.ObjectThemeColor = ThemeColor.Accent2;
shape2.Fill.PatternColor.ObjectThemeColor = ThemeColor.Accent6;

ピクチャ塗りつぶし

ピクチャ塗りつぶしでは、まず IShapes インタフェースのAddShapeメソッドを使用して、ピクチャで塗りつぶす図形を追加します。さらに、IPictureFormat インタフェースのプロパティを使用して、ピクチャの高さ、ピクチャの幅、輝度、コントラスト、再彩色、X 軸と Y 軸のオフセットなどの特性を含むピクチャ形式を設定することもできます。

ピクチャで図形を塗りつぶす方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//ピクチャタイプの図形を追加します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 20, 20, 100, 100);
string path = @"Images\flower.jpg";
FileStream stream = System.IO.File.Open(path, FileMode.Open);
shape.Fill.UserPicture(stream, ImageType.JPG);
stream.Dispose();
//ピクチャの色変更
shape.PictureFormat.ColorType = PictureColorType.Grayscale;
//ピクチャの明るさとコントラスト比を設定します
shape.PictureFormat.Brightness = 0.6;
shape.PictureFormat.Contrast = 0.3;
//指定したピクチャの高さ、幅、x軸オフセット、y軸オフセットを設定します
shape.PictureFormat.Crop.PictureOffsetX = 10;
shape.PictureFormat.Crop.PictureOffsetY = -5;
shape.PictureFormat.Crop.PictureWidth = 120;
shape.PictureFormat.Crop.PictureHeight = 80;

テクスチャ塗りつぶし

テクスチャ塗りつぶしでは、IFillFormat インタフェースのPresetTexturedメソッドまたはUserTexturedメソッドを使用して、テクスチャで図形を塗りつぶすことができます。さらに、TextureAlignmentプロパティ、TextureHorizontalScaleプロパティ、TextureOffsetXプロパティ、TextureOffsetYプロパティ、およびTextureVerticalScaleプロパティを使用して、テクスチャのレイアウトを設定することもできます。

テクスチャ塗りつぶしで図形を塗りつぶす方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//テクスチャ塗りつぶし
IShape shape3 = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 360, 10, 100, 100);
shape3.Fill.PresetTextured(PresetTexture.Canvas);
shape3.Fill.TextureAlignment = TextureAlignment.Center;
shape3.Fill.TextureOffsetX = 2.5;
shape3.Fill.TextureOffsetY = 3.2;
shape3.Fill.TextureHorizontalScale = 0.9;
shape3.Fill.TextureVerticalScale = 0.2;
shape3.Fill.Transparency = 0.5;

線は、図形を囲む一種の境界線です。ILineFormatインタフェースのプロパティとメソッドを使用して、スプレッドシートのセルに挿入された図形の周囲に線を作成できます。

図形の線と線スタイルを設定する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//図形の線スタイルを設定します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 10, 10, 100, 100);
shape.Line.DashStyle = LineDashStyle.Dash;
shape.Line.Style = LineStyle.Single;
shape.Line.Weight = 2;
shape.Line.Color.ObjectThemeColor = ThemeColor.Accent6;
shape.Line.Transparency = 0.3;

図形の線は、単色塗りつぶし、グラデーション塗りつぶし、およびパターン塗りつぶしもサポートしています。使用方法は図形塗りつぶしと同様です。

3D 書式設定

DioDocs for Excel では、X 軸、Y 軸、Z 軸をそれぞれ中心とした回転角度を設定することで、挿入された図形の 3 次元レイアウトを書式設定できます。

埋め込み図形に 3D 書式設定を適用する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//X 軸、Y 軸、Z 軸をそれぞれ中心とした回転角度を設定します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 50, 10, 100, 100);
shape.ThreeD.RotationX = 50;
shape.ThreeD.RotationY = 20;
shape.ThreeD.RotationZ = 30;
shape.ThreeD.Depth = 7;
shape.ThreeD.Z = 20;

図形テキスト

DioDocs for Excel では、IShape インタフェースの TextFrameプロパティを使用して、図形のテキストとテキストスタイルを自由に設定できます。

挿入した図形にテキストとテキストスタイルを設定する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//図形のテキストとテキストスタイルを構成します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 40, 40, 100, 100);
shape.TextFrame.TextRange.Font.Color.RGB = System.Drawing.Color.FromArgb(0, 255, 0);
shape.TextFrame.TextRange.Font.Bold = true;
shape.TextFrame.TextRange.Font.Italic = true;
shape.TextFrame.TextRange.Font.Size = 20;
shape.TextFrame.TextRange.Font.Strikethrough = true;

shape.TextFrame.TextRange.Paragraphs.Add("これは長方形です。");
shape.TextFrame.TextRange.Paragraphs.Add("これはGcExcelです。");
shape.TextFrame.TextRange.Paragraphs[1].Runs.Add("Hello World!");

shape.TextFrame.TextRange.Paragraphs[1].Runs[0].Font.Strikethrough = false;
shape.TextFrame.TextRange.Paragraphs[1].Runs[0].Font.Size = 35;

Setting text on shape in DioDocs for Excel

図形への参照式の設定

図形に、範囲または定義された名前のテキストを参照する数式を設定するには、IShape インターフェースの Formula プロパティを使用します。図形に数式を初めて設定すると、図形は参照先の最初のセルのテキストとフォントスタイルを取得します。そして、一度数式が設定された図形は、参照先のセルの内容が変更された場合、図形のテキストの値は更新されますが、フォントスタイルは更新されません。

C#
コードのコピー
// 図形に「G8」への参照を設定します
IShape shapeResult = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, worksheet.Range["B7:D8"]); 
shapeResult.Formula = "=G8"; 

図形の参照を削除するには、Formula プロパティに null を設定します。参照を削除すると、図形のテキストは通常テキストになり、図形コンテンツは削除された参照の最初のセルのテキストになり、フォントスタイルは既定のスタイルになります。

また、xlsx、JSON I/O、PDF、HTML、画像にエクスポートするときに、図形に設定された参照式を保持することもできます。

図形に参照式を設定する方法については、DioDocs for Excel サンプルブラウザを参照してください。

図形テキストの配置設定

図形内のテキストを左揃え、右揃え、中央揃え、均等割り付け、両端揃えに配置するには、TextAlignment プロパティを使用します。また、HorizontalAnchor プロパティを使用してテキストを含むテキストフレームの横方向の位置を中央に、VerticalAnchor プロパティを使用して縦方向の位置を上揃え、中央揃え、下揃えに配置することができます。

図形内のテキストの配置に関する設定は、PDFドキュメントにもエクスポートすることができます。

テキストの配置

図形内のテキスト範囲または段落の配置を設定するには、ITextRange インタフェースの TextAlignment プロパティに TextAlignmentAnchor 列挙体を設定します。

図形内のテキスト範囲と段落の配置を設定する方法については、次のコード例を参照してください。

C#
コードのコピー
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.Worksheets[0];

// 図形を追加します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 10, 10, 200, 200);

// 図形にテキスト範囲と 3 つの段落を追加します
shape.TextFrame.TextRange.Text = "テキスト範囲の配置";
shape.TextFrame.TextRange.Paragraphs.Add("左揃え");
shape.TextFrame.TextRange.Paragraphs.Add("中央揃え");
shape.TextFrame.TextRange.Paragraphs.Add("右揃え");

// テキスト範囲を左揃えにします
shape.TextFrame.TextRange.TextAlignment = TextAlignmentAnchor.Left;

// 段落を中央揃えにします
shape.TextFrame.TextRange.Paragraphs[2].TextAlignment = TextAlignmentAnchor.Center;

// 段落を右揃えにします
shape.TextFrame.TextRange.Paragraphs[3].TextAlignment = TextAlignmentAnchor.Right;

// ワークブックを XLSX および PDF 形式で保存します
workbook.Save("Alignment.xlsx");
workbook.Save("Alignment.pdf");

テキストフレームの配置

テキストフレーム(テキストの入れ物のようなもの)には、図形に追加したテキストや段落が含まれます。図形のテキストフレームの横方向と縦方向の配置を設定するには、ITextFrame インタフェースの HorizontalAnchor プロパティと VerticalAnchor プロパティに、HorizontalAnchor 列挙体と VerticalAnchor 列挙体をそれぞれ設定します。これにより、テキストフレームを横方向には中央に、縦方向には上揃え、中央揃え、下揃えに配置することができます。

図形のテキストフレームの配置を設定する方法については、次のコード例を参照してください。

C#
コードのコピー
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.Worksheets[0];

//図形を追加します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 10, 10, 300, 300);

//図形に2つの段落を追加します
shape.TextFrame.TextRange.Paragraphs.Add("DioDocs for Excel");
shape.TextFrame.TextRange.Paragraphs.Add("中央揃えにします");

//テキストを縦方向に中央揃えにします
shape.TextFrame.VerticalAnchor = VerticalAnchor.AnchorMiddle;
//テキストを横方向に中央揃えにします
shape.TextFrame.HorizontalAnchor = HorizontalAnchor.Center;

workbook.Save("Alignment.xlsx");
workbook.Save("Alignment.pdf");

また、テキスト範囲や段落の配置、および図形のテキストフレームの配置を両方設定することもできます。テキストフレームを下揃え、段落を右揃えの配置に設定する方法については、次のコード例を参照してください。

C#
コードのコピー
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.Worksheets[0];

// 図形を追加します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 10, 10, 400, 200);

// 図形に段落を追加します
shape.TextFrame.TextRange.Paragraphs.Add("右下に配置されます。");

// テキストフレームを下揃えに配置します
shape.TextFrame.VerticalAnchor = VerticalAnchor.AnchorBottom;

// 段落を右揃えに配置します
shape.TextFrame.TextRange.Paragraphs[0].TextAlignment = TextAlignmentAnchor.Right;

// ワークブックを XLSX および PDF 形式で保存します
workbook.Save("Alignment.xlsx");
workbook.Save("Alignment.pdf");

メモ: TextAlignmentAnchor.Mixed は、テキスト範囲にある段落に異なる配置が適用されている図形に対して返される特別な列挙値です。TextAlignment.Mixed を使用して図形内のテキストまたは段落の配置を設定すると、例外が発生します。

図形テキストの方向の設定

図形内のテキストの方向を横書き、縦書き、右へ90度回転、左へ90度回転に設定できるとともに、半角文字を含む縦書きの場合は、行の並び(「右から左」など)を設定することができます。図形のテキストフレームの方向を設定するには、ITextFrameインターフェースのDirectionプロパティにTextDirection列挙体を設定します。

テキストの方向を縦書きに設定する方法については、次のコード例を参照してください。

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

// 図形を追加します
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 10, 10, 200, 200);

// 図形に段落を追加します
shape.TextFrame.TextRange.Paragraphs.Add("DioDocs for Excel");

// テキストフレームの方向を縦書きに設定します
shape.TextFrame.Direction = TextDirection.Vertical;

// ワークブックを保存します
workbook.Save("TextDirection.xlsx");

図形テキストの余白の設定

図形内のテキストの余白を下、左、右、上方向に設定するには、ITextFrameインタフェースのMarginBottom、MarginLeft、MarginRight、およびMarginTopのそれぞれのプロパティを使用します。

次のコードは、shapeという図形でテキストの余白を構成し、shape2の場合デフォルト値を使用します。

C#
コードのコピー
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 1, 10, 150, 100);
IShape shape2 = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, 200, 10, 150, 100);

//テキストの余白を設定します
shape.TextFrame.MarginBottom = 30;
shape.TextFrame.MarginLeft = 30;
shape.TextFrame.MarginRight = 30;
shape.TextFrame.MarginTop = 30;

shape.TextFrame.TextRange.Paragraphs[0].Runs.Add("図形のテキストの余白を設定します。");
shape2.TextFrame.TextRange.Paragraphs[0].Runs.Add("デフォルトの余白でテキストを入力します。");