我需要在运行时确定图表中的数据并将其放在.doc中。 为了构造文档,我使用Aspose来替换.doc模板中的元素。 通过将Excel工作簿导入Word进行示例图表,他们大多使用默认值,但我无法构建看起来像它的图表。
右边是我试图在代码中创建的示例图表,左边是我到目前为止所做的。
.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;
}
答案 0 :(得分:0)
我解决了其中几个问题:
指定系列
上的标记 line.MarkerStyle = MarkerStyle.Circle;
line.MarkerSize = 7;
还是一个问题,刻度线标签值是有问题的,我需要它们恰好是x轴值,就像在Word中使用Excel工作簿时的默认值一样。
指定图表大小:
chart.Width = 280;
chart.Height = 180;
指定格式:
area.AxisY.LabelStyle.Format = "€{#,##0 }";
我发现了另外两个问题,如果我不能解决它们,会问另一个问题。