Excel::Writer::XLSX Просмотр страницы и разрывы страниц (Perl)

Я искал API, Google, StackOverflow и т. д., пытаясь найти ответ на следующие вопросы, но до сих пор мои поиски были разочаровывающими. Кто-нибудь там может мне помочь?

1) Я пытаюсь использовать параметр set_page_view(), чтобы по умолчанию для рабочего листа использовался «Предварительный просмотр разрыва страницы». К сожалению, страница CPAN не дает мне действительных параметров для этой функции. Я пытался использовать set_page_view('Предварительный просмотр разрыва страницы'), но вместо этого я получаю представление "Макет страницы".

2) В моем скрипте я ссылаюсь на set_h_pagebreaks() и set_v_pagebreaks для динамического размещения разрывов страниц при написании листа Excel. Это прекрасно работает, однако рабочие листы иногда также создают разрывы страниц по умолчанию. Есть ли способ удалить разрывы страниц по умолчанию с помощью этого модуля?

Спасибо за любую помощь, которую вы можете предоставить!! Я могу предоставить некоторые из моих кодов, если это необходимо.


person etspaceman    schedule 21.03.2013    source источник
comment
Итак, set_page_view буквально означает «Макет страницы по умолчанию»? Хорошо, это имеет смысл. Спасибо! Есть мысли по поводу разрывов страниц?   -  person etspaceman    schedule 22.03.2013
comment
Взгляните на github.com/jmcnamara/excel-writer-xlsx/blob/master/lib/Excel/. В нем есть комментарий # TODO. Добавить режим pageBreakPreview по запросу. Судя по всему, это еще не реализовано. В самом методе set_page_view можно передать параметр, который не проверяется. Вы можете разветвить проект и пропатчить его самостоятельно.   -  person simbabque    schedule 22.03.2013
comment
Да, на данный момент это означает, что по умолчанию используется «Макет страницы», я полагаю. Но, как я уже сказал, он подготовлен. Вы могли бы добавить это сами. Я уверен, что JMCNAMARA рад любой хорошей помощи, которую он может получить.   -  person simbabque    schedule 22.03.2013


Ответы (2)


В связи с вашими вопросами:

  1. Предварительный просмотр разрыва страницы в настоящее время не поддерживается Excel::Writer::XLSX.

  2. Модуль Excel::Writer::XLSX ничего не делает для установки разрывов страниц по умолчанию. Вероятно, они устанавливаются самим Excel. Если они есть, то Excel::Writer::XLSX не имеет возможности их удалить.

person jmcnamara    schedule 21.03.2013
comment
Печальный день. Хорошо, спасибо за помощь! Я могу жить с удалением разрывов страниц, когда они появляются. Я воспользуюсь предложением simbabque и взломаю код, чтобы посмотреть, смогу ли я добавить режим pageBreakPreview. :) - person etspaceman; 22.03.2013

О вашем вопросе: «Есть ли способ удалить разрывы страниц по умолчанию с помощью этого модуля?»

Я думаю, что у меня есть начало решения для вас;)

(даже если бы это было 5 лет назад, мой ответ мог бы помочь другим, так что...)

Я тоже боролся с этим (у меня был вертикальный и горизонтальный автоматический разрыв страницы, аргумент, так раздражает!), Но я понял, что, как и на веб-сайте офиса, говорится: «Microsoft Excel вставляет автоматические разрывы страниц в зависимости от размера бумаги, настроек полей , параметры масштабирования и положения любых разрывов страниц вручную, которые вы вставляете». (https://support.office.com/en-us/article/insert-move-or-delete-page-breaks-in-a-worksheet-ad3dc726-beec-4a4c-861f-ed640612bdc2?omkt=en-001&ui=en-US&rs=en-001&ad=US)

Итак, как говорится в этом тексте, ваши автоматические разрывы страниц зависят от нескольких факторов. Какой у вас масштаб для печати на примере? какой у вас размер бумаги? И так далее...

Лично моя проблема заключалась в том, что у меня была шкала 100% для очень широкого и длинного документа Excel. Поэтому я просто написал функцию, которая вычисляет идеальный масштаб, чтобы избежать автоматического разрыва страницы по вертикали, и мои автоматические разрывы страницы по горизонтали исчезли.

Надеюсь, это полезно ^^


РЕДАКТИРОВАТЬ: Вот пример кода

#We put the horizontal page breaks at line 20, 40 and 60
worksheet.set_h_pagebreaks([20,40,60])
#We calculate the ideal scale according to your criterias
ideal_scale=pre_determined_number/width_of_all_columns
#We put a scale and then, Excel won't put some automatic breakline when we'll 
#finish to write the excel file
worksheet.set_print_scale(ideal_scale)
person Guillaume Gobbe    schedule 10.08.2018
comment
Хотя это может ответить на вопрос, лучше включить вашу функцию, объясняющую, что вы сделали. - person Jeroen Heier; 10.08.2018