Форум » GUI » нумерация страниц в Excel » Ответить

нумерация страниц в Excel

gustow: Может, кому пригодится... Захотел выгонять выборки-отчеты в Excel... (пользую - уж извините - Win98 и Office-97). Вроде как нет проблем! (пользую Harbour 0.46 и HMG 1.3 Extended от 22.01.2007) Простейший пример: ========= code start ======= #include "minigui.ch" #include "common.ch" FUNCTION MAIN() LOCAL oExcel, oSheet LOCAL nRow, cBuf, i // открыл базы и пр. use PEOPLE new // к примеру, база клиентов oExcel := TOleAuto():New( "Excel.Application" ) oExcel:WorkBooks:Add() oSheet := oExcel:Get("ActiveSheet") oExcel:Visible := .F. // * * * тут пишем для нижнего колонтитула nRow := 1 // ваяю заголовок oSheet:Cells( nRow, 1 ):Value = "№ п/п" oSheet:Cells( nRow, 2 ):Value = "ФИО" oSheet:Cells( nRow, 3 ):Value = "Дата рождения" // делаю рамки заголовка и пр. // ... // чешу по базе, набираю в буфер обмена [разделяя графы chr(9) и в конец строки ставя chr(10)] // и вставляю i:=0 do while .not.(PEOPLE->(eof())) cBuf:="" cBuf:=ltrim(str(i))+chr(9)+trim(PEOPLE->FIO)+chr(9)+dtoc(PEOPLE->DR)+chr(10) i:=i+1 PEOPLE->(dbskip()) if i>100 or PEOPLE->(eof()) CopyToClipboard( cMemo ) oSheet:Cells( nRow, 1 ):Select() oSheet:paste() cBuf:="" nRow:=nRow+i i:=0 endif enddo oSheet:Columns( "A:C" ):AutoFit() oSheet:Cells( 1, 1 ):Select() oExcel:Visible := .T. oSheet:End() oExcel:End() OleUninitialize() // чтобы в памяти не оставался процесс "Excel" // и дальше - уже в Экселе гляжу, печатаю и пр. close PEOLPE return Nil ========= code end ======= В общем - все просто вроде как... Всякое форматирование, рамки и др. и пр. в содержимом листа могу устанавливать как хочу - но... Захотел банального - чтобы в нижнем центральном колонтитуле печаталось "Страница ... из ...". Вроде тоже как бы нефиг делать... Пишем (в месте, обозначенном в коде "// * * *") - то же, что пишем, когда в Экселе ваяем: oSheet:PageSetup:CenterFooter := "Страница &P из &N" ...Ан фигвам! При предпросмотре (и - соответственно - на печати) видим в колонтитуле лишь: "Страница из " - и всё! После долгого "долбления" (ни в Хелпе, ни в где ничего полезного не нашел) - взял, слепил в Экселе колонтитул, сохранил XLS-ку, открыл в проге, прочитал fofooter := oSheet:PageSetup:CenterFooter MsgInfo("CenterFooter = { "+ fofooter + " }") ...и получил вот это... "Страница &С из &K" ("С" и "К" - кириллица; chr(209) и chr(202) соответственно) ??? Какие "С"?.. Какие "К"?.. А, не важно - написал строчку лепления колонтитула oSheet:PageSetup:CenterFooter := "Страница &С из &К " // к примеру, "Страница 10 из 56" (где-то, кстати, советовали не забывать добавить в конце строки ПРОБЕЛ) И все сработало как миленькое! В общем, ни фига не понял - но, главное, фурычит :))

Ответов - 2

Andrey: Спасибо gustow за пример ! Буду использовать в дальнейшем. Побольше бы таких примеров.

gustow: Дык! Сам озадачился - и когда задачу поставили, и когда решение (с "С" и "К") нашел... Ни в где про такое не было!... Теперь вот озадачился - а если у клиента вдруг (ну вдруг!) будет _НЕрусский_ Office ?? Тогда ведь евойному Excel'у надо подсовывать исконные "P" и "N"... И как сопределить его "национальную принадлежность"?.. За неимением "под рукой" такового (НЕрусского) решил пока не заморачиваться... но "галочку" (ToDo) себе поставил :)



полная версия страницы