実行時にグラフのデータを決定し、.doc に入れる必要があります。ドキュメントを作成するには、Aspose を使用して .doc テンプレートの要素を置き換えます。グラフの例は、Excel ワークブックを Word にインポートすることによって作成されました。ほとんどの場合、既定値が使用されますが、そのようなグラフを作成することはできません。
右側はコードで作成しようとしているチャートの例、左側はこれまでに取得したものです。
- 各データポイントをマークするドットはありません
- 目盛りラベルは、目盛りの間ではなく目盛りに配置されます (軸の位置で行われます)。コードでこれを行う方法がわかりません。
- グラフの高さが圧縮されているのは、.net チャートで作成された画像が正方形であり、画像の例の境界内に詰め込む必要があるためです (幅/高さの比率を変更する方法は?)
- 大きな数字は . でフォーマットされません。3 つの数字の各グループ間。
.docx はオプションではありません。ファイル形式は .doc でなければなりません。
グラフを作成するための私のコード。このコードは、データを使用して呼び出され、グラフに入力されます。
public MemoryStream MakeLineChart(string title, string[] captions, Color[] colors, decimal[][] values)
{
var chart = new Chart();
var area = new ChartArea("MyChartArea");
area.AxisY2.LineWidth = 0;
area.AxisY.LineWidth = 0;
area.AxisY.MajorGrid.Enabled = false;
area.AxisY.MinorGrid.Enabled = false;
area.AxisX.IsMarginVisible = true;
foreach (var axis in area.Axes)
{
axis.LineColor = Color.LightGray;
axis.MajorGrid.LineColor = Color.LightGray;
axis.MajorTickMark.Enabled = false;
}
var legend = new Legend();
legend.LegendStyle = LegendStyle.Row;
legend.Docking = Docking.Bottom;
legend.DockedToChartArea = area.Name;
legend.Enabled = true;
chart.Legends.Add(legend);
chart.ChartAreas.Add(area);
chart.BorderlineColor = Color.Black;
chart.BorderlineWidth = 2;
chart.Titles.Add(title);
chart.TextAntiAliasingQuality = TextAntiAliasingQuality.High;
chart.AntiAliasing = AntiAliasingStyles.All;
for (int i = 1; i < values.Length; i++)
{
var line = new Series(captions[i - 1]);
line.ChartArea = area.Name;
line.ChartType = SeriesChartType.Spline;
line.Color = colors[i - 1];
line.BorderWidth = 5;
for (int j = 0; j < values[i].Length; j++)
{
line.Points.AddXY(values[0][j], values[i][j]);
}
chart.Series.Add(line);
}
var image = new MemoryStream();
chart.SaveImage(image, ChartImageFormat.Emf);
return image;
}