создание отчёта OpenCalc из VFP (фильтр и центрирование данных на листе при печати) | |
---|---|
Leffurt Сообщений: 33 Дата регистрации: 15.06.2015 |
Требуется создать отчёт из VFP в OpenCalc.
Не могу найти аналоги Excel команд для OpenOffice. Есть ссылки на сайты community.i-rs.ru и oooforum.org , но похоже, что сайты не работают. Почти всё получается,осталось две проблемы: Как настроить печать отчёта по середине по горизонтали (в Excel: oExcel.Sheets[1].PageSetup.CenterHorizontally=.T.) Как установить фильтр (в Excel, например, на 7 строку: oExcel.Range("A7:G7").AutoFilter) К сожалению, макросы в OpenOffice не дают результата в нужном формате... |
Re: создание отчёта OpenCalc из VFP (фильтр и центрирование данных на листе при печати) | |
---|---|
ABB Сообщений: 149 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Посмотрите praisachion.blogspot.com
|
Re: создание отчёта OpenCalc из VFP (фильтр и центрирование данных на листе при печати) | |
---|---|
Leffurt Сообщений: 33 Дата регистрации: 15.06.2015 |
Спасибо, но не помогло. Там только о конвертации данных, а мне нужно о настройке стиля печати.
|
Re: создание отчёта OpenCalc из VFP (фильтр и центрирование данных на листе при печати) | |
---|---|
Bront Автор Сообщений: 15 Откуда: Барнаул Дата регистрации: 08.06.2007 |
смотри тут rvc44 дал подробный рабочий пример, с ответами на Ваши вопросы. Он первопроходец по ОО на этом форуме
Спасибо ему большое. forum.foxclub.ru а тут есть ссылки на книгу Питоньяка, на класс по выгрузке в ОО forum.foxclub.ru |
Re: создание отчёта OpenCalc из VFP (фильтр и центрирование данных на листе при печати) | |
---|---|
Bront Автор Сообщений: 15 Откуда: Барнаул Дата регистрации: 08.06.2007 |
забыл про автофильтр, выдернул из функции
LOCAL i, lcAlias, lcField, loDoc, loSheet, loBorderLine, loPageStyles, loPageSetup, ; loFooter, loText, loLocale, loFormats, loShell, sFileName, cURL LOCAL ARRAY laArgs[2] * Откроем OO Calc с "пустым" документом cURL = "private:factory/scalc" loDesktop = OOoGetDesktop() laArgs[1] = OOoPropertyValue( "Hidden", .T.) laArgs[2] = OOoPropertyValue( "ReadOnly", .F. ) loDoc = loDesktop.LoadComponentFromUrl( cURL, "_blank", 0, @ laArgs ) * Make sure that arrays passed to this document are passed zero based. COMARRAY( loDoc, 10 ) * Прячем окно Calc'а чтобы пользователь не видел процесс заполнения loDoc.GetCurrentController.GetFrame.GetContainerWindow.SetVisible(.F.) * Выбираем первый лист loSheet = loDoc.getSheets().getByIndex( 0 ) loLocale = OOoCreateStruct( "com.sun.star.lang.Locale" ) With loLocale .Language = "ru" .Country = "RU" EndWith loFormats = loDoc.getNumberFormats() If NOT loDoc.DatabaseRanges.hasByName("MyName") && проверка на наличие диапазона, так как его нет то определяю его *** определяю последнюю строку и столбец на листе LOCAL aAddress, lcRow_out, lcCol_out, lcrange, oRangeOrg, oCell, oCursor */* aAddress - возвращаемый обьект,содержит */* aAddress.EndRow - последняя строка */* aAddress.EndColumn - последняя колонка oCell = loSheet.getCellByPosition(0, 0) oCursor = loSheet.createCursorByRange(oCell) oCursor.GotoEndOfUsedArea(.T.) aAddress = oCursor.RangeAddress lcRow_out=aAddress.EndRow lcCol_out=aAddress.EndColumn *** создается текстовый диапазон lcrange="A10:C10" *** Этот диапазон объектом oRangeOrg = loSheet.getCellRangeByName(lcrange).RangeAddress *** даем ему название This.loDocument.DatabaseRanges.addNewByName("MyName", oRangeOrg ) ENDIF oRange = loDoc.DatabaseRanges.getByName("MyName") oRange.AutoFilter = .T. && применяю автофильтр * Запишем файл *.xls в папку Out sFileName = pcZapusk + [Out\] + cTitle + [.xls] cURL = "file:///" + CHRTRAN( sFileName, "\", "/" ) && OOoConvertToURL( sFileName ) laArgs[1] = OOoPropertyValue("Overwrite", .T.) laArgs[2] = OOoPropertyValue("FilterName", "MS Excel 97") loDoc.storeAsURL(cURL, @laArgs) * Делаем сформированный отчет видимым loDoc.getCurrentController.getFrame.getContainerWindow.SetVisible(.T.) * Работа со скриптами отсутствует на Windows 98! TRY loShell = CreateObject("WScript.Shell") loShell.AppActivate(cTitle) && Спасибо Вадиму Пирожкову aka piva! loShell.SendKeys("") && См. forum.foxclub.ru CATCH ENDTRY |
© 2000-2024 Fox Club  |