:: Visual Foxpro, Foxpro for DOS
Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
Добрый день, возможно ли експортировать из fox pro в ексель, что бы получилась структура таблицы (групировка), и если возможно, как это делается? Спасибо.



Исправлено 1 раз(а). Последнее : ventall, 07.01.19 11:21
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
forum.foxclub.ru


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
Спасибо!
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
еще раз огромное спасибо, все получилось. единственно что, можно ли закрепить первую строку в екселе програмно, что б заголовки колонок не убегали вверх?



Исправлено 1 раз(а). Последнее : ventall, 07.01.19 17:18
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
AndyNigmatec

Сообщений: 1552
Откуда: Волгоград
Дата регистрации: 28.06.2015
нажмаем в экселе - запись макроса, делаем что нужно, затем смотрим что там макрос поназаписал, забираем нужное в свой код )))
Ratings: 0 negative/1 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
спасибо, но там другой синтаксис, как его перевести в код фокса?
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
ventall
спасибо, но там другой синтаксис, как его перевести в код фокса?

Перевод макроса Excel в синтаксис FoxPro
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
уже прочитал, спасибо! только не увидел там про закрепление рабочей области.
вот что записал макрос:

Range("B2").Select
ActiveWindow.FreezePanes = True
сижу туплю, ну ни в как после праздников голова не хочет думать=)



Исправлено 2 раз(а). Последнее : ventall, 08.01.19 12:03
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
ventall
уже прочитал, спасибо! только не увидел там про закрепление рабочей области, нету там и про скрытие строк.
(...)

сижу туплю, ну ни в как после праздников голова не хочет думать=)

- А вы что, и есть за меня будете?
- Ага!

(с)


ActiveWindow

Правой кнопкой в макросе и выбрать "Object Browser". Откроется окошко, где видно, к какому объекту-родителю это относится. Это объект Excel.Application. Т.е. самого Excel. Не листа!

Соответственно, ссылку надо получать так

loWindow = loExcel.ActiveWindow
loWindow.FreezePanes = .t.

PS: В данном форуме есть кнопка "Поиск". Можно поискать по слову FreezePanes примеры использования

Например: forum.foxclub.ru



Исправлено 4 раз(а). Последнее : Владимир Максимов, 08.01.19 12:24
Ratings: 0 negative/2 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
простите меня, чуть подправил свой ответ, вроде все правильно делаю,
в коде дописал
.Range(.Cells(3, 1), .Cells(3, 1)).Select
.ActiveWindow.FreezePanes = .T.

при выполнении ошибка
OLE error code 0x80020006:unknown name
фокс не понимает ActiveWindow.FreezePanes = .T. ?
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
ура! все получилось!
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
Нельзя установить свойство FreezePanes в Excel 2013-16

Если у Вас этот случай, то используйте предварительно созданный шаблон, на котором делаете все нужные настройки дизайна. А из FoxPro просто заполняете этот шаблон данными
Ratings: 0 negative/1 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
нет, все заработало, спасибо! я и правда не правильно делал, сделал как вы написали и заработало


.Range(.Cells(2, 2), .Cells(2, 2) ).Select
loExcel.ActiveWindow.FreezePanes = .T.
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
наберусь наглости, и спрошу, а возможно ли покрасить итоги другим цветом, всю таблицу получается, фильтр добавил, а вот как указать что бы ячейки залиты были .Subtotal не пойму как...
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
forum.foxclub.ru


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
читал я, нету там такого,все советуют создать шаблон, и заполнять его
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
ventall
читал я, нету там такого,все советуют создать шаблон, и заполнять его

Какой шаблон, о чём это?

loExcel = CREATEOBJECT("Excel.Application")
loExcel.Visible = .T.
loWB = loExcel.Workbooks.Add()
loSheet = loWB.Sheets(1)
DIMENSION paData[5]
paData[1] = "Ivanoff"
paData[2] = "Petroff"
paData[3] = "Sidoroff"
WITH loSheet
.Range(.Cells(1,1), .Cells(1, 3)).Value = PassArray("paData")
.Range(.Cells(2,2), .Cells(2, 3)).Interior.Color = 5296274
ENDWITH
PROCEDURE PassArray(tcArrayName)
RETURN @&tcArrayName


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
заливает все строки, а нужно только итожки subtotal.
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
ventall
заливает все строки, а нужно только итожки subtotal.
ну так диапазон ячеек может надо указывать такой же как и у итожков, а не абы какой?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Структурирование (группировка) в ексель из foxpro
ventall
Автор

Сообщений: 132
Дата регистрации: 29.11.2013
не пойму как, ведь нужно закрасить всю строку, а она есть в диапозоне с обычными ячейками. как понять какая строка будет .subtotal? я бы уже вручную их прописал, уже два дня перевел, а толку мало...


#DEFINE xlSum -4157
LOCAL ln1, ln2, ln3, lcUser, lcGroup, loExcel, loWB, loSheet, lnRows, laTotalList[8]
PRIVATE paData


loExcel = CREATEOBJECT("Excel.Application")
loWB = loExcel.Workbooks.Add()
loSheet = loWB.Sheets(1)
DIMENSION paData[12]
paData[1] = "Група"
paData[2] = "Подгрупа"
paData[3] = "Название"
paData[4] = "СКПП"
paData[5] = "СКХА"
paData[6] = "СКИЛ"
paData[7] = "СКЛУ"
paData[8] = "СКГК"
paData[9] = "СКРО"
paData[10] = "СКРА"
paData[11] = "СКШЕ"
paData[12] = "ВСЕГО"
WITH loSheet
.Range(.Cells(1,1), .Cells(1, 12)).Value = PassArray("paData")

SELECT tmp.col_1, tmp.col_2, tmp.col_3, tmp.col_4,;
tmp.col_5, tmp.col_6, tmp.col_7, tmp.col_8, tmp.col_9,;
tmp.col_10, tmp.col_11;
FROM tmp ORDER BY col_1, col_2, col_3;
INTO ARRAY paData


lnRows = _TALLY
laTotalList[1] = 4
laTotalList[2] = 5
laTotalList[3] = 6
laTotalList[4] = 7
laTotalList[5] = 8
laTotalList[6] = 9
laTotalList[7] = 10
laTotalList[8] = 11


.Range(.Cells(2, 1), .Cells(m.lnRows + 1, 11)).Value = PassArray("paData")
.Range(.Cells(2, 4), .Cells(m.lnRows + 1, 11)).Interior.ColorIndex = 20&&20- бледно-голубой, 4- зеленый
.Range(.Cells(2, 1), .Cells(m.lnRows + 1, 3)).Interior.ColorIndex = 19&&20- бледно-голубой, 4- зеленый
.Range(.Cells(2, 1), .Cells(m.lnRows + 1, 11)).Borders.LineStyle = 1&& прорисовка линий
.Range(.Cells(2, 1), .Cells(m.lnRows + 2, 11)).Borders.WEIGHT = 1&& прорисовка линий


*подитоги
WITH .Range(.Cells(1, 1), .Cells(m.lnRows + 1, 11))
.Subtotal(1, xlSum, @laTotalList,.T.,.F.,.T.)
ENDWITH
WITH .Range(.Cells(2, 12), .Cells(m.lnRows + 100, 12))
.Select
.Formula = "=SUM(d2:k2)"
endwith


*авторазмер первой колонки
.Range(.Cells(1, 1), .Cells(1, 1)).EntireColumn.AutoFit()

*закрепление ячеек
.Range(.Cells(2, 2), .Cells(2, 2) ).Select
loExcel.ActiveWindow.FreezePanes = .T.
loExcel.ActiveWindow.DisplayZeros = .F.
*автофильтр
.range("A:B").EntireColumn.AutoFilter
*групировка уровень2
loExcel.ActiveSheet.Outline.ShowLevels(2)

***************не получается************ либо не заливает, либо заливает все
*WITH loSheet
* .Range(.Cells(2, 1), .Cells(m.lnRows + 1, 11)).Value = PassArray("paData")
* .Range(.Cells(2,2), .Cells(m.lnRows + 1, 11)).Interior.Color = 5296274
* ENDWITH

ENDWITH
loExcel.Visible = .T.

PROCEDURE PassArray(tcArrayName)
RETURN @&tcArrayName
ENDPROC



Исправлено 3 раз(а). Последнее : ventall, 09.01.19 12:55
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 47 (Гостей: 47)

© 2000-2024 Fox Club 
Яндекс.Метрика