機能と特長
機能と特長
このページでは、チャート作成機能について取り上げます Aspose.Words FOSS for .NET 動作するC#例を用いて、 DocumentBuilder.InsertChart() および Chart オブジェクトモデルです。ライブラリの完全な文書オブジェクトモデル(段落、表、スタイル、ブックマーク、セクション)は、製品概要と Quickstart ガイドに記載されています。
チャート付きドキュメントの作成
DocumentBuilder.InsertChart() でチャートシェイプを挿入し、返された Shape を介してその Chart オブジェクトにアクセスします。実際のデータを追加する前に、デフォルトで生成されたシリーズをクリアしてください:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
// Delete default generated series.
chart.Series.Clear();
string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
doc.Save("chart.docx");チャートシリーズ、データポイント、マーカー
Chart.Series は ChartSeriesCollection です。各 ChartSeries は DataPoints を通じて個々のデータポイントを公開し、シリーズ全体に影響を与えることなく単一ポイントのマーカーや書式設定をカスタマイズできます:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
ChartDataPointCollection points = series.DataPoints;
ChartDataPoint point1 = points[0];
ChartDataPoint point2 = points[1];
point1.InvertIfNegative = true;
point1.Marker.Symbol = MarkerSymbol.Square;
point2.InvertIfNegative = true;
point2.Marker.Symbol = MarkerSymbol.Diamond;
// Reset a single data point back to the series' inherited default formatting.
point1.ClearFormat();チャートデータラベル
ChartSeries.DataLabels は、シリーズのすべてのポイントのラベルを一括で制御する ChartDataLabelCollectionです。DataLabels[i] を使ってインデックスし、個々の ChartDataLabel を上書きできます:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
series.HasDataLabels = true;
series.DataLabels.ShowValue = true;
ChartDataLabel label = series.DataLabels[1];
label.ShowCategoryName = true;
label.Position = ChartDataLabelPosition.Below;チャート軸タイトル
Chart.AxisX と Chart.AxisY はそれぞれ、Title プロパティを通じて ChartAxisTitle を公開します:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
Chart chart = shape.Chart;
ChartAxisTitle xTitle = chart.AxisX.Title;
ChartAxisTitle yTitle = chart.AxisY.Title;
xTitle.Show = true;
xTitle.Text = "Categories";
yTitle.Show = true;
yTitle.Text = "Values";チャート凡例とフォント
Chart.Legend は LegendEntries を公開し、シリーズごとに 1 つの ChartLegendEntry があり、それぞれが独自の Font を持ちます。Font は塗りつぶし書式を実装しているため、Font.Fill.Solid() は他の書式化されたランと同様に単色のテキストカラーを設定します:
using System.Drawing;
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartLegend legend = shape.Chart.Legend;
Font font1 = legend.LegendEntries[0].Font;
Font font2 = legend.LegendEntries[1].Font;
font1.Fill.Solid(Color.Blue);
font2.Color = Color.Green;チャートデータテーブル
Chart.DataTable は、チャートの下に基になるシリーズ値を表示する ChartDataTableです。その Has*Border と HasLegendKeys プロパティは、どの部分が表示されるかを制御します:
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartDataTable dataTable = shape.Chart.DataTable;
dataTable.HasLegendKeys = false;
dataTable.HasHorizontalBorder = true;
dataTable.HasVerticalBorder = true;
dataTable.HasOutlineBorder = false;
doc.Save("chart-report.docx");ヒントとベストプラクティス
DocumentBuilder.InsertChart()は新しいチャートにデフォルトで生成されたシリーズを設定します — 独自のデータを追加する前にchart.Series.Clear()を呼び出してください。さもなければデフォルトがそのまま残ります。- カスタム書式設定が必要なポイントが少数の場合は
ChartSeries.DataLabels[i]を使って単一のデータラベルを対象にしてください;コレクションレベルのプロパティ(DataLabels.ShowValueなど)を使用すれば、シリーズ内のすべてのラベルに対して一括でデフォルトを設定できます。 ClearFormat()はChartDataPointとChartDataLabelCollectionの両方で利用可能です — 直接書式設定をシリーズがデフォルトで継承する状態にリセットします。- フィールド評価エンジンは
DATEやDOCPROPERTYといったコンテンツフィールドをプログラム的に更新しますが、ページレイアウトに依存するフィールド(目次のページ番号、NUMPAGESなど)は、このエディションにレイアウトエンジンが含まれていないため、プレースホルダー0の値として評価されます。 - 以下をご覧ください インストールガイド これらの API を参照する前に、NuGet を使用してパッケージを追加するか、ソースからビルドしてください。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
ページ番号または目次エントリに 0 が表示されます | このエディションにはページレイアウト/レンダリングエンジンが含まれていません | 期待される動作 — レイアウト依存のフィールド値は計算されません。商用版を使用してください Aspose.Words for .NET 必要な場合は |
Document.Save()から.pdf、.xps、または画像拡張子が失敗します | このエディションにはレンダリング形式が含まれていません | 代わりに DOCX、DOCM、DOTX、DOTM、Flat OPC、Markdown、または plain text に保存してください |
.doc、.rtf、.odt、.html、または .epub ファイルの読み込みに失敗しました | ロード/セーブには DOCX、DOCM、DOTX、DOTM、Flat OPC、Markdown、plain text のみがサポートされています | まずソースファイルを DOCX に変換するか、商用エディションをご利用ください |
| カスタムデータを追加した後でも、デフォルトの chart series がまだ表示されます | chart.Series.Clear() は InsertChart() の後に呼び出されませんでした | デフォルトで生成されたシリーズをクリアしてから chart.Series.Add() を呼び出してください |
FAQ
目次のページ番号が0になるのはなぜですか?
このFOSSエディションにはページレイアウトおよびレンダリングサブシステムが含まれていないため、ページレイアウトに依存するフィールド値(ページ番号を含む)は、計算された値ではなくプレースホルダー 0 に評価されます。
ドキュメントをPDFまたは画像形式にエクスポートできますか?
このエディションではできません。PDF、XPS、画像エクスポートは、このエディションを無料に保つために削除された同じレンダリングサブシステムに依存しています。これらの出力には、.NET 用の商用 Aspose.Words を使用してください。
ドキュメントに新しいデジタル署名を作成できますか?
いいえ — このエディションは既存のデジタル署名を検証できますが、新しい署名は作成できません。
InsertChart() がサポートしているチャートの種類は何ですか?
InsertChart() は ChartType の値を取ります — 列挙型は、折れ線、縦棒、横棒、円、面積、ドーナツ、レーダー、散布図、株価、サーフェスチャートなどの標準的なチャートファミリーをカバーし、スタックや3Dバリアントも含みます。
API Reference の概要
| クラス / プロパティ | 説明 |
|---|---|
Document | ルート文書オブジェクト; Save() は DOCX、Markdown、またはプレーンテキストに書き込みます |
DocumentBuilder | ハイレベルカーソル API; InsertChart() はチャートシェイプを追加します |
Shape | InsertChart() が返す描画オブジェクト; Chart プロパティを公開します |
Chart | チャートオブジェクト; Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | シリーズデータ (Add, Clear) とシリーズごとの設定 |
ChartDataPoint / ChartDataPointCollection | ポイントごとの書式設定; ClearFormat() |
ChartMarker / MarkerSymbol | データポイントマーカーの形状とサイズ |
ChartDataLabel / ChartDataLabelCollection | ラベルごとおよびコレクション全体のラベル表示設定 |
ChartAxisTitle | タイトルテキストが Chart.AxisX / Chart.AxisY に表示される |
ChartLegend / ChartLegendEntry | チャートの凡例とシリーズごとのエントリ |
ChartDataTable | チャートの下に表示されるデータテーブル |
Font / Fill | チャートのテキスト要素に対するテキスト書式設定と塗りつぶし(単色、グラデーション) |