Я генерируя первенствует круговая диаграмма с Delphi и все идет хорошо, за исключением, когда я хочу этикетки (со значениями) для отправки на внешней стороне PieOLE Automation Delphi Excel Chart Labels позиционирующие
Так что мой генерируемой пирог выглядит следующим образом:
И я хочу, чтобы получить это:
Так что мой код выглядит следующим образом:
if not CreateExcel then exit;
VisibleExcel(false);
if AddWorkBook then
begin
SelectSheet(1);
end;
AddChart(ChartName,xl3DPieExploded);//xl3DColumn);
SetSourceData(1{ChartName},2,'A1:B5',xlColumns);
randomize;
VisibleExcel(false);
E.ActiveWorkbook.Sheets.Item[2].Cells[1,1] :='Some text';
E.ActiveWorkbook.Sheets.Item[2].Cells[1,2] :='Chart title';
E.ActiveWorkbook.Sheets.Item[2].Cells[2,1] :='Mijloace de productie';
E.ActiveWorkbook.Sheets.Item[2].Cells[3,1] :='Mediul de munca';
E.ActiveWorkbook.Sheets.Item[2].Cells[4,1] :='Sarcina de munca';
E.ActiveWorkbook.Sheets.Item[2].Cells[5,1] :='Executant';
E.ActiveWorkbook.Sheets.Item[2].Cells[2,2] := FloatToStr(proc1)+'%';
E.ActiveWorkbook.Sheets.Item[2].Cells[3,2] := FloatToStr(proc2)+'%';
E.ActiveWorkbook.Sheets.Item[2].Cells[4,2] := FloatToStr(proc3)+'%';
E.ActiveWorkbook.Sheets.Item[2].Cells[5,2] := FloatToStr(proc4)+'%';
// remove the legend
E.ActiveWorkbook.Charts.Item['Chart1'].Select;
E.ActiveChart.Legend.Select;
E.Selection.Delete;
// apply labels
E.ActiveWorkbook.Charts.Item['Chart1'].Select;
E.ActiveChart.SeriesCollection(1).ApplyDataLabels;
// formatting chart labels.
E.ActiveChart.ApplyDataLabels(xlDataLabelsShowLabelAndPercent, false,true,
true{HasLeaderLines: OleVariant; }, false {ShowSeriesName: OleVariant;},
true {ShowCategoryName: OleVariant; }, true {ShowValue: OleVariant;},
false {ShowPercentage: OleVariant; }, false {ShowBubbleSize: OleVariant;},
'; '{Separator: OleVariant; });
Итак, у него есть LeaderLines, это далеко работает, но теперь я хочу увидеть ярлыки за пределами пирога, на расстоянии. Как это сделать. Я записал макрос в Excel, но я не могу его применить к Delphi. Макрос код, который я хочу использовать в Дельфах:
ActiveSheet.ChartObjects("Chart 1").Activate
Selection.Position = xlLabelPositionOutsideEnd
Отлично. Благодарю. Вы решили мою проблему – user1137313
Добро пожаловать! – TLama