Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Покрасить диаграмму? / 2 сообщений из 2, страница 1 из 1
19.05.2006, 14:28:39
    #33738769
Makar4ik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покрасить диаграмму?
Тут с задачкой столкнулся, и затык полный... :(

Есть данные в Excel, есть отчет в PowerPoint.

В PowerPoint'e есть круговые диаграммы, данные для которых берутся из Excel.
Вернее, не берутся, а линкуются.

Все бы ничего, но возникла необходимость раскрашивать сектора диаграммы не в те цвета, которые PowerPoint подставляет от себя, а в цвета, которые обозначены в том же файле Excel.

Никто не сталкивался с такой проблемой?
Или хотя бы с чем-то подобным?

Буду благодарен за любую помощь.
...
Рейтинг: 0 / 0
23.05.2006, 19:25:25
    #33746721
sergeyko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покрасить диаграмму?
Вообщем-то ничего сложного.
[не программер поэтому могу термины путать :))]
Сhart в powerpoint (да и во всем офисе вроде) это отдельное приложение GRAPH. Вставлено в слайд как EmbeddedOLEObject.
Описание его в \Program Files\Microsoft Office\OFFICE11\1033 в соответствующем хелповнике.

Ниже пример процедуры из работающей програмки на delphi, которая как раз и раскрашивала графики.
Вот вроде и все.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
procedure TMForm.ColorchartsOnSlide(slide:variant);
var
 datasheet : variant;
 graph : variant;
 ci,i,k,sc,pp:integer;
 rc:boolean;
 sname:string;
 v1,v2:variant;
begin

 for i:= 1  to slide.Shapes.Count do
  if slide.Shapes.item(i).Type =  7  {msoEmbeddedOLEObject} then
  begin
   v2:=slide.Shapes.item(i).OLEFormat.ProgID;
   if pos('MSGraph.Chart',slide.Shapes.item(i).OLEFormat.ProgID)>0 then
    begin
     graph:=slide.Shapes.item(i).OLEFormat.Object;
     datasheet:=graph.Application.datasheet;
     if graph.Application.plotby =  1 {xlRows} then rc:=True
     else rc:=False;
     case graph.Type of
     {xlPie} 5 ,{xl3DPie}- 4102 :
              begin
               rc:=Not(rc);
               for sc:= 1  to  1 {graph.SeriesCollection.Count} do
                for pp:= 1  to graph.SeriesCollection(sc).Points.Count do
                 begin
                  if rc then sname:=datasheet.Cells[pp +  1 ,  1 ]
                  else sname:=datasheet.Cells[ 1 , pp +  1 ];
                  ci:=FindInPalette(sname);
                  if ci>- 1  then
                   begin
                    graph.SeriesCollection(sc).Points(pp).fill.visible:=true;
                    graph.SeriesCollection(sc).Points(pp).Interior.Color:=TPaletteRec(PaletteTree.Items[ci].data).PrimaryColor;
                   end;
                 end;
              end;
      else
               for sc:= 1  to graph.SeriesCollection.Count do
                begin
                 if rc then sname:=datasheet.Cells[sc +  1 ,  1 ]
                 else sname:=datasheet.Cells[ 1 , sc +  1 ];
                 ci:=FindInPalette(sname);
                 if ci>- 1  Then
                  begin
                   v1:=graph.SeriesCollection(sc).chartType;
                   case graph.SeriesCollection(sc).chartType of
                   {xlLine} 65 , 4  : graph.SeriesCollection(sc).Border.Color:=TPaletteRec(PaletteTree.Items[ci].data).PrimaryColor;
                   {xlPie} 5 ,{xl3DPie}- 4102  : ;
                   else graph.SeriesCollection(sc).Interior.Color:=TPaletteRec(PaletteTree.Items[ci].data).PrimaryColor;
                   end;
                   graph.application.update;
                  end;
                end;
      end;
       graph.application.update;
       graph.application.quit;
       graph:=unassigned;
       DataSheet:=unassigned;
    end;
  end;
end;
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Покрасить диаграмму? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]