2013-04-18 47 views
2

我有一个包含3列的Excel表。列B和C是我的数据,列A包含每个点的标签。在C#中的列中向Excel中的标记添加标签

我不得不用这个让我右边的图表

series1Point.XValues = xlWorkSheetDimfract.get_Range("B1:B" + (ip - 1)); 
series1Point.Values = xlWorkSheetDimfract.get_Range("C1:C" + (ip - 1)); 

但A列的标签不甚至显示:

series1Point.ApplyDataLabels(); 

如何在标签添加到每个点我的图表是基于A列中写入的内容并在之后将图表变成jpeg?

Thnks

Excels.SeriesCollection seriesCollectionPoint = chartPageDimfract.SeriesCollection(); 

Excels.Series series1Point = seriesCollectionPoint.NewSeries(); 
series1Point.XValues = xlWorkSheetDimfract.get_Range("A1:B" + (ip - 1)); 
series1Point.Values = xlWorkSheetDimfract.get_Range("C1:C" + (ip - 1)); 
    series1Point.ApplyDataLabels(Microsoft.Office.Interop.Excel.XlDataLabelsType.xlDataLabelsShowLabel); 

     chartPageDimfract.ChartType = Excels.XlChartType.xlXYScatter;// xlLineMarkers; 

     series1Point.MarkerStyle = Excels.XlMarkerStyle.xlMarkerStyleDot; 
     series1Point.MarkerSize = 4; 


     chartPageDimfract.Export(xlsfic + "temp/dimmensionFractale.jpg", "JPG", misValue); 


     xlWorkBookDimfract.SaveAs(xlsfic + "temp/excel_chart_dimmensionFractale.xls", Excels.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excels.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
    xlWorkBookDimfract.Close(true, misValue, misValue); 

'IP' 是我填充我的excel表后使用的整数。它是最后一个项目的索引。

+0

你见过这个[链接](http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.chart.applydatalabels.aspx?cs-save-lang= 1&cs-lang = csharp#code-snippet-1) –

+0

是的,我确实....但它不适合我... –

+0

.SetSourceData没有给出正确的图表。 –

回答

2

正如我在评论中提到的那样,图表类型XY Scatterplot本身并不支持您正在尝试执行的那种标签。它允许您使用X,Y或X和Y两个值进行标注,但使用而不使用以及某些分类值。

创建一个包含要应用的标签的数组。该数组应该具有相同的顺序并且包含与该系列具有点数一样多的标签。

然后,这是我在VBA使用方法:

Sub AddXYScatterLabels() 

Dim ptLabels as Variant  '<~~ this is the array that I will populate with the labels to use from Column A. 

Dim i as Long: i=1 
Dim srs as Series   '<~~ This is the series that you will assign the labels to.' 
Dim pt as Point    '<~~ use this to iterate over srs.Points collection.' 
ptLabels = Range("A1:A10") '<~~ Modify as needed for your Range object.' 

Set srs = ActiveSheet.ChartObjects(1).SeriesCollection(1) 

For each pt in srs.Points 
    pt.DataLabel.Text = ptLabels(i,1) 
    i = i+1 
Next 

End Sub 

然后,你应该能够使用Chart.Export方法来创建图表的JPG。

ActiveChart.Export "c:\chart.jpg" 
+0

你的男人!帮助! –

+0

+ 1良好的工作:) –