В продовження ось цієї статті ми будемо готувати. xls файл до друку. Процес підготовки документа до друку складається з таких етапів як визначення розміру паперу, полів, настройка колонтитулів і т.д.
Задаємо області друку.
activeSheet->querySubObject("PageSetup")->dynamicCall("PrintArea", "A1: D3"); // область друк А1: D3
Поля сторінки.
Поля сторінки задаються в точках, 1 точка = 1/72 дюйма = 1/28 сантиметра. Для завдання полів використовується чотири властивості: TopMargin, RightMargin, BottomMargin, LeftMargin.
activeSheet->querySubObject("PageSetup")->dynamicCall("TopMargin", 28); // верхнє поле дорівнює 1 см.
Колонтитули.
Величина колонтитулів задається властивостями: HeaderMargin, FooterMargin.
activeSheet->querySubObject("PageSetup")->dynamicCall("HeaderMargin", 28); // розмір верхнього колонтитула дорівнює 1см.
Тут є невеликий підступ, якщо значення верхнього поля менше величини колонтитула, текст колонтитула буде "наїжджати" на остновной текст сторінки, щоб цього не відбувалося при завданні верхнього та нижнього поля треба враховувати розмір колонтитула.
В Excel верхній і нижній колонтитул розділені на з частини: LeftHeader, CenterHeader, RightHeader - верхні і соответсвенно: LeftFooter, CenterFooter, RightFooter - нижні. У кожну частину текст задається окремо.
activeSheet->querySubObject("PageSetup")->dynamicCall("LeftFooter", QDate::currentDate().toString("dd.MM.yyyy")); // поточну дату в лівий нижній колонтитул < br>
activeSheet->querySubObject("PageSetup")->dynamicCall("RightHeader", "The name of our firm"); // назва фірми в правий верхній колонтитул
Орієнтація і розмір паперу.
Орієнтація паперу визначається значенням властивості Orientation, і може приймати одне з двох значень: xlPortrait - вертикальна сторінка, xlLandscape - горизонтальна.
activeSheet->querySubObject("PageSetup")->dynamicCall("Orientation", "xlLandscape");
Розмір визначається властивістю PaperSize, таблицю значень констант для цієї властивості я взяв з довідки по VisualBasic.
Name | Value | Description |
---|---|---|
xlPaper10x14 | 16 | 10 in. x 14 in. |
xlPaper11x17 | 17 | 11 in. x 17 in. |
xlPaperA3 | 8 | A3 (297 mm x 420 mm) |
xlPaperA4 | 9 | A4 (210 mm x 297 mm) |
xlPaperA4Small | 10 | A4 Small (210 mm x 297 mm) |
xlPaperA5 | 11 | A5 (148 mm x 210 mm) |
xlPaperB4 | 12 | B4 (250 mm x 354 mm) |
xlPaperB5 | 13 | A5 (148 mm x 210 mm) |
xlPaperCsheet | 24 | C size sheet |
xlPaperDsheet | 25 | D size sheet |
xlPaperEnvelope10 | 20 | Envelope # 10 (4-1/8 in. x 9-1/2 in.) |
xlPaperEnvelope11 | 21 | Envelope # 11 (4-1/2 in. x 10-3/8 in.) |
xlPaperEnvelope12 | 22 | Envelope # 12 (4-1/2 in. x 11 in.) |
xlPaperEnvelope14 | 23 | Envelope # 14 (5 in. x 11-1/2 in.) |
xlPaperEnvelope9 | 19 | Envelope # 9 (3-7/8 in. x 8-7/8 in.) |
xlPaperEnvelopeB4 | 33 | Envelope B4 (250 mm x 353 mm) |
xlPaperEnvelopeB5 | 34 | Envelope B5 (176 mm x 250 mm) |
xlPaperEnvelopeB6 | 35 | Envelope B6 (176 mm x 125 mm) |
xlPaperEnvelopeC3 | 29 | Envelope C3 (324 mm x 458 mm) |
xlPaperEnvelopeC4 | 30 | Envelope C4 (229 mm x 324 mm) |
xlPaperEnvelopeC5 | 28 | Envelope C5 (162 mm x 229 mm) |
xlPaperEnvelopeC6 | 31 | Envelope C6 (114 mm x 162 mm) |
xlPaperEnvelopeC65 | 32 | Envelope C65 (114 mm x 229 mm) |
xlPaperEnvelopeDL | 27 | Envelope DL (110 mm x 220 mm) |
xlPaperEnvelopeItaly | 36 | Envelope (110 mm x 230 mm) |
xlPaperEnvelopeMonarch | 37 | Envelope Monarch (3-7/8 in. x 7-1/2 in.) |
xlPaperEnvelopePersonal | 38 | Envelope (3-5/8 in. x 6-1/2 in.) |
xlPaperEsheet | 26 | E size sheet |
xlPaperExecutive | 7 | Executive (7-1/2 in. x 10-1/2 in.) |
xlPaperFanfoldLegalGerman | 41 | German Legal Fanfold (8-1/2 in. x 13 in.) |
xlPaperFanfoldStdGerman | 40 | German Legal Fanfold (8-1/2 in. x 13 in.) |
xlPaperFanfoldUS | 39 | US Standard Fanfold (14-7/8 in. X 11 in.) |
xlPaperFolio | 14 | Folio (8-1/2 in. x 13 in.) |
xlPaperLedger | 4 | Ledger (17 in. x 11 in.) |
xlPaperLegal | 5 | Legal (8-1/2 in. x 14 in.) |
xlPaperLetter | 1 | Letter (8-1/2 in. x 11 in.) |
xlPaperLetterSmall | 2 | Letter Small (8-1/2 in. x 11 in.) |
xlPaperNote | 18 | Note (8-1/2 in. x 11 in.) |
xlPaperQuarto | 15 | Quarto (215 mm x 275 mm) |
xlPaperStatement | 6 | Statement (5-1/2 in. x 8-1/2 in.) |
xlPaperTabloid | 3 | Tabloid (11 in. x 17 in.) |
xlPaperUser | 256 | User-defined |
Номер першої сторінки.
activeSheet-> querySubObject ("PageSetup") -> dynamicCall ("FirstPageNumber", 50);
Масштаб сторінок.
Є три властивості для встановлення масштабу: FitToPageTall - вписати по висоті, FitToPageWide - вписати по ширині і власне сам Zoom - масштаб. Щоб встановити машстаб за першими двома властивостями Zoom повинен бути відключений примусово, інакше зміни будуть ігноруватися.
activeSheet-> querySubObject ("PageSetup") -> dynamicCall ("Zoom", false); / / відключаємо властивість Zoom
activeSheet-> querySubObject ("PageSetup") -> dynamicCall ("FitToPageTall", 2); / / в 2 сторінки по висоті
activeSheet-> querySubObject ("PageSetup") -> dynamicCall ("FitToPageWide", 1); / / в 1 сторінку по ширині
або
activeSheet-> querySubObject ("PageSetup") -> dynamicCall ("Zoom", 150); / / масштаб 150%
Коментарі
Дописати коментар