![]() |
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум | ![]() |
![]() |
Лисоводы всех стран, объединяйтесь !!! |
Методы Excel с аргументом ожидающим Array(Array()) | |||
---|---|---|---|
kvichans Автор Сообщений: 307 Откуда: Москва |
Возможно ли сформировать аргумент для метода Excel в виде массива массивов?
Встретился такой случай. Метод Workbooks.OpenText позволяет указать форматы колонок через параметр FieldInfo. Запись макро показала, что на VBA значение этого параметра выглядит так FieldInfo:=Array(Array(1, 1), Array(2, 1)) Можно ли на фоксе сформировать такое? ------------------ Андрей, FoxPro с 2003 года ![]() |
||
Re: Методы Excel с аргументом ожидающим Array(Array()) | |||
---|---|---|---|
rvc44 Сообщений: 2211 Откуда: Тамбов |
Точно знаю, что сформировать аргумент для метода OpenOffice Calc (бесплатный аналог Excel)
в виде массива массивов (array of array) возможно. Более того, даже пробывал сам! Как-то раз при автоматизации Calc из VFP нужно было выполнить строку вида oNumRules.replaceByIndex(lJ-1, oRule) Обсуждая эту проблему с французским коллегой Бернардом Марселли выяснилось, что это проблема VFP, что он умеет работать ТОЛЬКО с многомерными массивами, а с массивами массивов не умеет работать (хотя даже СУБД Clipper for DOS) этот тип данных поддерживает. Такой облом произошел очевидно, т.к. FoxPro в свое время перекупил M$, а все языки программирования от MS никогда не были перегруженными исчерпывающе-полезной функциональностью, как, например, это было свойственно Clipper'у и ClipperTools II. Но при автоматизации OO данный просчет в архитектуре VFP возможно преодолеть, если напрямую объяснить automation bridge ("мостику" автоматизации) от Sun Microsystems (создатель OpenOffice, Java и пр.) что это за тип данных! Так, чтобы вышеуказанный код в одну строку, легко выполнимый из макросов Calc, также работал из VFP переписываем его согласно главы Professional Uno > Automation Bridge > Type Mappings > Mapping of a sequence руководства Developer's Guide от Sun Microsystems:
ooServiceManager = OOoGetServiceManager()
unoWrap = ooServiceManager.Bridge_GetValueObject()
unoWrap.set('[]com.sun.star.beans.PropertyValue', @oRule)
oNumRules.replaceByIndex(lJ-1, unoWrap) Как быть в случае с Excel я не знаю, т.к. наша контора работает только на OpenOffice и вцелом все весьма довольны. Думаю, что в этой задаче неплохо было бы поискать аналог automation bridge для Excel, если, конечно, он существует. Ведь в штатных ситуациях, при программировании для Calc можно также обойтись без automation bridge. В общем копайте документацию от MS. Удачи! ![]() |
||
Re: Методы Excel с аргументом ожидающим Array(Array()) | |||
---|---|---|---|
rubinov Сообщений: 483 |
FieldInfo - просто 2-размерный массив. Прилагаю что я когда-то записал в свою записную книжку *OPenText NOtes *expression.OpenText(Filename, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo), *where only one parameter requered, Filename * www.universalthread.com, Message# 702641 oExcel.Workbooks.OpenText(lcSemiColonFile,,,xlDelimited,,,,.T.,,,,, @arrFldSemicolonInfo) *If you know the format of fields create an array defining it, * otherwisee do not pass field info array. oExcel.Workbooks.OpenText(lcSemiColonFile,,,xlDelimited,,,,.T.) *Field info array is two dimensional where first defines the column order and second formatting. ie: *If you would export 10 columns where 5,6th columns are date type and you want them as MDY (rest text): *#DEFINE xlDelimited 1 *#DEFINE xlFixedWidth 2 *#DEFINE xlGeneralFormat 1 *#DEFINE xlTextFormat 2 *#DEFINE xlMDYFormat 3 *#DEFINE xlDMYFormat 4 *#DEFINE xlYMDFormat 5 *#DEFINE xlMYDFormat 6 *#DEFINE xlDYMFormat 7 *#DEFINE xlYDMFormat 8 *#DEFINE xlSkipColumn 9 *#DEFINE xlEMDFormat 10 dimension arrFldSemicolonInfo[10,2] for ix=1 to 10 arrFldSemicolonInfo[ix,1]=ix arrFldSemicolonInfo[ix,2]=xlTextFormat endfor arrFldSemicolonInfo[5,2]=xlMDYFormat arrFldSemicolonInfo[6,2]=xlMDYFormat Исправлено 1 раз(а). Последнее : rubinov, 25.10.07 18:29 ![]() |
||
Re: Методы Excel с аргументом ожидающим Array(Array()) | |||
---|---|---|---|
kvichans Автор Сообщений: 307 Откуда: Москва |
Спасибо, Юра. Это как раз то, что нужно.
------------------ Андрей, FoxPro с 2003 года ![]() |
||
© 2000-2022 Fox Club  |