Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 Excel.Как изменить размер листа при печати?  [new]
esr
Member

Откуда: Moscow
Сообщений: 179
У меня из программы на C++ формируется отчет в Excel.
Но вот никак не пойму какое из свойств объекта Range нужно использовать,
чтобы задать из C++ размеры листа при печати.

Или надо как-то по другому?

Help!
27 июн 08, 19:26    [5859851]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
White Owl
Member

Откуда:
Сообщений: 10240
Зайди в Эксель. Tools->Macro->Record new macro. Сделай то что ты хочешь. Потом посмотри записанный макрос.
27 июн 08, 19:31    [5859858]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
esr
Member

Откуда: Moscow
Сообщений: 179
White Owl
Зайди в Эксель. Tools->Macro->Record new macro. Сделай то что ты хочешь. Потом посмотри записанный макрос.


Спасибо, это я знаю. Вот текст такого макроса

With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.393700787401575)
.RightMargin = Application.InchesToPoints(0.393700787401575)
.TopMargin = Application.InchesToPoints(0.984251968503937)
.BottomMargin = Application.InchesToPoints(0.984251968503937)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
End With

Но я не могу понять как обратиться из C++ к элементу ActiveSheet.PageSetup ?
27 июн 08, 20:03    [5859907]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
White Owl
Member

Откуда:
Сообщений: 10240
А как ты обращаешься к Range? Точно так же и к PageSetup.
27 июн 08, 20:15    [5859924]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7617

Краткий курс перевода с албанского
_________________
"Helo, word!" - 17 errors 56 warnings

Posted via ActualForum NNTP Server 1.4

27 июн 08, 20:26    [5859949]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
esr
Member

Откуда: Moscow
Сообщений: 179
White Owl
А как ты обращаешься к Range? Точно так же и к PageSetup.


Обращаюсь я к Range вот так:

Workbooks oBooks=app.GetWorkbooks();

_Workbook oBook=oBooks.Add(vOpt);


Worksheets oSheets = oBook.GetWorksheets();

_Worksheet oSheet=oSheets.GetItem(COleVariant((short)1));

Range oRange=oSheet.GetRange(COleVariant("A1"),COleVariant("C1"));

Ну и так далее, могу потом задать границы выделенных ячеек, записать туда значения, формулы и т.д.


И нужно всего-то научиться после определения oSheet как-то задать поля(отступы от края листа)
Они по умолчанию - по 2.5 см. А мне надо задать по 1.0 см.

Но вот в свойствах oSheet я этого не нахожу! ???
28 июн 08, 19:59    [5861244]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7617

oSheet->PageSetup->LeftMargin
oSheet->PageSetup->RightMargin
oSheet->PageSetup->TopMargin
"...i так далi..."
_________________
"Helo, word!" - 17 errors 56 warnings

Posted via ActualForum NNTP Server 1.4

29 июн 08, 03:39    [5861643]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
esr
Member

Откуда: Moscow
Сообщений: 179
Ex_Soft

oSheet->PageSetup->LeftMargin
oSheet->PageSetup->RightMargin
oSheet->PageSetup->TopMargin
"...i так далi..."
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4


Thank You,Понятно. Но вот нет у меня в oSheet такого пункта PageSetup! Почему?

Я использую Microsoft Visual C++ Version 7. Ну и в проект включаю файлы excel8.h и excel8.cpp.
30 июн 08, 10:46    [5863536]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
Ex_Soft
Member

Откуда:
Сообщений: 7617

M$ VC++ - не копенгаген (в моих VS2003/2005 excel8.h - не обнаружен), а у борманов - все в наличии:
PageSetup=Sheet1.OlePropertyGet("PageSetup");
PageSetup.OlePropertySet("Orientation",2);
||
ExcelWorksheetDest->get_PageSetup()->set_RightHeader(tmpWChar_tBuff);
так что - курите в сторону чего-нить а-ля:
oSheet.GetPageSetup();
_________________
"Helo, word!" - 17 errors 56 warnings

Posted via ActualForum NNTP Server 1.4

30 июн 08, 18:06    [5866223]     Ответить | Цитировать Сообщить модератору
 Re: Excel.Как изменить размер листа при печати?  [new]
esr
Member

Откуда: Moscow
Сообщений: 179
Ex_Soft

M$ VC++ - не копенгаген (в моих VS2003/2005 excel8.h - не обнаружен), а у борманов - все в наличии:
PageSetup=Sheet1.OlePropertyGet("PageSetup");
PageSetup.OlePropertySet("Orientation",2);
||
ExcelWorksheetDest->get_PageSetup()->set_RightHeader(tmpWChar_tBuff);
так что - курите в сторону чего-нить а-ля:
oSheet.GetPageSetup();
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4


Спасибо за поддержку! Проблему я всё-таки решил. Конечно у меня в excel8.h всё что надо было, просто я в этом вопросе пока мало разбираюсь. Всё оказалось просто:

PageSetup oPs;

oPs=oSheet.GetPageSetup();

oPs.SetLeftMargin((double)1.5);
oPs.SetRightMargin((double)1.0);

Спасибо еще раз!
1 июл 08, 10:26    [5867949]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить
 
Лучший учебный центр Microsoft!
Новейшие курсы Microsoft SQL Server 2014!
Статус Academy Oracle. Очень привлекательные цены на курсы Oracle!
Отсрочка платежа или скидка 5% на комплексные программы!