powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / А вот, помню...
4 сообщений из 4, страница 1 из 1
А вот, помню...
    #32171161
Dimon_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...была задача. Работали (давно) на 5-м фоксе, и надо было для клиента вывести результаты запроса в ексель с таблицей и диаграммой. С таблицей проблем ноль, с диаграммой - запускаешь из фокса в екселе мастер диаграмм, и вроде все. А клиенту подавай выбор диаграммы в фоксе в режиме диалога (тип диаграммы, заголовки и т.д.), а уж потом все это должно было вывалиться в ексель со всеми его (клиента) установками. Т.е. нужно было передать в мастер диаграмм некие выбранные клиентом данные (все те же тип диаграммы, заголовки и т.д.), чтобы он, бедный, не мучался с мастером диаграмм в екселе. Единственное, что нашли в фоксе, это что запускается мастер диаграмм екселя с кучей параметров, среди которых те самые (тип диаграммы, заголовки и т.д.).

ВНИМАНИЕ, ВОПРОС: может, кто-то знает, какой параметр за что отвечает?
...
Рейтинг: 0 / 0
А вот, помню...
    #32171169
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не в фоксе надо искать а доке по MsOffice
...
Рейтинг: 0 / 0
А вот, помню...
    #32171328
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Dimon_1

В samples\solution есть пример на эту тему. Кроме того, можно помучаться с Objects Browser от Excel.
...
Рейтинг: 0 / 0
А вот, помню...
    #32171342
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнению к вышеизложенному небольшой пример:
Описываете класс (я обычно делаю это в главной процедуре):

Код: 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.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
*
* Exel automation
*
Define Class cusExcelAutomation As Custom
  oExcelSession= ""

  Function Init
  This.oExcelSession=Createobject(" Excel.Application ")
Endfunc

  Function Show
  This.oExcelSession.Visible=.T.
Endfunc

  Function Hide
  This.oExcelSession.Visible=.F.
Endfunc

*! transfer VFP table into Excel book
  Function SendTable
  Lparameters pcAlias
  Local lnSelect,lnKount,lnrow,lxValue
  lnSelect=Select()
* add new records
  This.oExcelSession.Workbooks.Add
  Select (pcAlias)
  lnrow=1 
  For i= 1  To Fcount()
    lxValue=(Field(i))
    This.oExcelSession.Cells(lnrow,i).Value=lxValue
  Endfor
  lnrow= 2 
  Scan
    For lnKount =  1  To Fcount()
      If !Empty(Eval(Field(lnKount)))
        lxValue=Eval(Field(lnKount))
        This.oExcelSession.Cells(lnrow,lnKount).Value=lxValue
      Else

      Endif
    Endfor
    lnrow=lnrow+ 1 
  Endscan
  Select (lnSelect)
Endfunc

Function CreateGraphPie
  Lparameters pcAlias,pctitle
  Local lcRow, lcColumn
  This.SendTable(pcAlias)
  lcBeginLocation="A1 "
  lcEndLocation=Chr(64 +Fcount(pcAlias))+Alltrim(Str(Reccount(pcAlias)+ 1 , 10 , 0 ))
  This.oExcelSession.Range(lcBeginLocation+": "+lcEndLocation).Select
 This.oExcelSession.charts.Add()
 With This.oExcelSession.ActiveChart
   .Type = -4102 
   .HasTitle = .t.
   .HasLegend= .t.
   .HasDataTable=.t.
   .ChartTitle.Text = pctitle
   .ApplyDataLabels( 5 )
   .ChartTitle.font.size= 16 
EndWith
Endfunc

Function CreateGraphLine
  Lparameters pcAlias,pctitle
  Local lcRow, lcColumn
  This.SendTable(pcAlias)
  lcBeginLocation="A1 "
  lcEndLocation=Chr(64 +Fcount(pcAlias))+Alltrim(Str(Reccount(pcAlias)+ 1 , 10 , 0 ))
  This.oExcelSession.Range(lcBeginLocation+": "+lcEndLocation).Select
 This.oExcelSession.charts.Add()
 With This.oExcelSession.ActiveChart
   .Type = 4 
   .HasTitle = .t.
   .HasLegend= .t.
   .HasDataTable=.t.
   .ChartTitle.Text = pctitle
*   .ApplyDataLabels( 5 )
   .ChartTitle.font.size= 14 
EndWith
ENDFUNC
Function CreateGraphBS
  Lparameters pcAlias,pctitle
  Local lcRow, lcColumn
  This.SendTable(pcAlias)
  lcBeginLocation="A1 "
  lcEndLocation=Chr(64 +Fcount(pcAlias))+Alltrim(Str(Reccount(pcAlias)+ 1 , 10 , 0 ))
  This.oExcelSession.Range(lcBeginLocation+":"+lcEndLocation).Select
 This.oExcelSession.charts.Add()
 With This.oExcelSession.ActiveChart
   .Type = m.vld1
   .HasTitle = .t.
   .HasLegend= .t.
   .HasDataTable=.t.
   .ChartTitle.Text = pctitle
*   .ApplyDataLabels( 5 )
   .ChartTitle.font.size= 14 
EndWith
Endfunc
Enddefine


Теперрь вызов из формы одного из графиков:

Код: plaintext
1.
2.
3.
x=Createobject( "cusExcelAutomation" )
x.Show()
x.CreateGraphBS( "a1" , "Absolute growth your portfolio for year - " +Str(Year(m.ldd1), 4 ))
Release x


На что следует обратить внимание - "a1" - алиас таблицы, в которой подготовлены данные. А вот тип задается у меня глобальной переменной "m.vld1" для этого типа графика.

Да, и самое главное замечание - программно доступны НЕ ВСЕ типы графиков (по крайненй мере в Office 2000)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / А вот, помню...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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