powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Массивом в ексел
4 сообщений из 4, страница 1 из 1
Массивом в ексел
    #33167308
Уважаемые, помогите пожалуйста!
Все примеры которые видел по передачи таблицы (например из грида) используют построчную передачу, а как можно одним массивом сделать это, например при помощи ado и т.д., с фоксом я знаком мало, так, что если можно по подробнее.
Заранее спасибо.
...
Рейтинг: 0 / 0
Массивом в ексел
    #33167361
Дмитрий Т.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно предварительно сделать нужную выборку во временную таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
*Пербросить в эксель заготовку:
copy to tmp.xls field ... type xl5
*затем отформатировать
loEx=newobject("Excel.sheet")
with loEx.parent
	.Workbooks.Open(fullpath("tmp.xls"))
	.range("a1").value="Название 1"
	.range("b1").value="Название 2"
	.Columns("A:A").ColumnWidth =  40 
	.Columns("B:B").ColumnWidth =  20 
	...
	.ActiveWorkbook.SaveAs("Новый файл",- 4143 )
	.ActiveWorkbook.Close()
endwith
release loEx
Работает быстро. Основной недостаток - выгрузка в формат Excel 95 - максимальное кол-во строк 16384. В более свежих экселях это ограничение отсутствует
...
Рейтинг: 0 / 0
Массивом в ексел
    #33169995
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Дмитрий!

> copy to tmp.xls field ... type xl5

copy to tmp.dbf field ... type fox2x AS 866

И никаких проблем с ограничениями :) А Excel без проблем открывает такой DBF. Главное при сохранении не забыть формат указать явно :)

2 неизвестный
Массив в фоксе вплоть до VFP9 ограничен 65000 элементов. Передать массив в МЕТОД Com сервера (Excel в частности) можно было и в VFP6, а вот присвоить массив свойству (например m.loSheet.Range("A1:J10").Value = m.paArray) нельзя и поныне - будет взят лишь первый элемент массива, но зато начиная с 7-й версии фокса можно возвращать массив из функции - и можно сделать хитрый трюк:

Код: plaintext
1.
2.
3.
m.loSheet.Range("A1:J10").Value = ArrayPasser("m.paArray")
FUNCTION ArrayPasser(lcName)
  RETURN @&lcName.
ENDFUNC


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Массивом в ексел
    #33173678
gotko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мой фрагмент из 5-го VFP -пашет с любым excel
**********
P_E=CREATEOBJECT('EXCEL.APPLICATION')
P_E.VISIBLE=.T.
P_E.WORKBOOKS.OPEN(file_name)
....
* выделение диапазона
p_e.range(p_e.cells(1,1),p_e.cells(strok+2,13)).select
p_e.selection.font.bold=.t.
...
for i=4 to 13 && впихивание формул
p_e.cells(strok+3,I).FormulaR1C1 = '=SUM(R[-'+alltrim(str(strok))+']C:R[-1]C)'
endfor
.....
for i=7 to 12 && обрисовка рамок
p_e.Selection.Borders(i).LineStyle=1
endfor

FOR I=1 TO ALEN(A_obj_u,1) && заголовки на плавающее кол-во стобцов
P_E.CELLS(1,I+13).VALUE=dtoc(a_obj_u(i,1))
p_e.cells(strok+3,I+13).FormulaR1C1 = '=SUM(R[-'+alltrim(str(strok))+']C:R[-1]C)'
ENDFOR

* раскраска
p_e.range(p_e.cells(1,1),p_e.cells(strok+3,3)).select
p_e.Selection.Interior.ColorIndex = 40

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


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