Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

23 Апрель 2019, 05:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Не нужная печать обрамления пустых ячеек  (Прочитано 395 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Burardus
Новичок
*
Offline Offline

Сообщений: 3


« Стартовое сообщение: 5 Апрель 2019, 10:11 »

Всем, добрый день!

Компонент: Calc
Сборка: LibreOffice Версия: 6.2.1.2 (x64)
ID сборки: 7bcb35dc3024a62dea0caee87020152d1ee96e71
ОС: Windows 7 x64 prof

Есть сгенерированные отчёты fast reports в формате excel xlsx, при открытии в Calc пустые ячейки имеют обрамление красным цветом, я так понимаю, что это генератор отчётов так делает, но к сожалению, нет возможности это поправить. В этом и проблема, что это всё выводится на печать. В excel, как я понял, происходит переопределение стиля оформления пустой ячейки, т.е. красное обрамление пустых ячеек заменяется на "без обрамления". Потому что если открыть в excel этот отчёт и просто сохранить его, не делая никаких изменения, то в Calc уже эти пустые ячейки без обрамления красным цветом.

Пока решаем в Calc так: f11 - на стандартном стиле ПКМ - Изменить - Положение линий/Предустановки/Убрать обрамление.

Можно как - то это "автоматизировать", чтобы при открытии документа происходило нечто похожее на обработку пустых ячеек "как в excel"?
К сожалению, не имею большого опыта в эксплуатации этого офисного пакета, чтобы справиться самому.

Вложением:

1.xlsx - образец отчёта.
1.pdf - как печатает по-умолчанию.
2.pdf - нужная печать.

Всем, заранее спасибо за помощь!

* 1.xlsx (6.19 Кб - загружено 5 раз.)
* 1.pdf (222.54 Кб - загружено 6 раз.)
* 2.pdf (221.69 Кб - загружено 3 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 696


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 5 Апрель 2019, 11:10 »

Можно как - то это "автоматизировать", чтобы при открытии документа происходило нечто похожее на обработку пустых ячеек "как в excel"?
"Как в excel" у вас уже есть, теперь попробуйте "как в Calc", в каждом подобном документе выполните макрос (наверно, лучше назначить его на панель инструментов или в меню):
Код:
Sub restore_to_default
Dim oDefaultStyle, oDefaultBorderLine As New com.sun.star.table.BorderLine
oDefaultStyle=ThisComponent.StyleFamilies.getByName("CellStyles").getByName("Default")
oDefaultStyle.BottomBorder=oDefaultBorderLine
oDefaultStyle.LeftBorder=oDefaultBorderLine
oDefaultStyle.RightBorder=oDefaultBorderLine
oDefaultStyle.TopBorder=oDefaultBorderLine
End Sub
Записан

Burardus
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #2: 5 Апрель 2019, 11:42 »

Добрый день!

Проверил, то, что нужно! А можете написать макрос, чтобы он: 1) сначала обрабатывал пустые ячейки 2) и следом вызывал стандартное окно печати (Ctrl+P)?

Было бы отлично сделать отдельную кнопку печати документов с таким функционалом.

Заранее спасибо!
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 696


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #3: 5 Апрель 2019, 12:11 »

Для вызова окна печати добавьте в конце предыдущего макроса (перед End Sub):
Код:
Dim disp
disp = createUnoService("com.sun.star.frame.DispatchHelper")
disp.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:Print", "", 0, Array())
Записан

Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 568


« Ответ #4: 5 Апрель 2019, 12:12 »

Было бы отлично сделать отдельную кнопку печати документов с таким функционалом.

Окно печати обязательно? Вы там делаете какие-то настройки печати. Или можно сразу все отправлять на принтер
Записан
Burardus
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #5: 5 Апрель 2019, 16:04 »

Для вызова окна печати добавьте в конце предыдущего макроса (перед End Sub):
Код:
Dim disp
disp = createUnoService("com.sun.star.frame.DispatchHelper")
disp.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:Print", "", 0, Array())

Большое спасибо, то что просил!

Было бы отлично сделать отдельную кнопку печати документов с таким функционалом.

Окно печати обязательно? Вы там делаете какие-то настройки печати. Или можно сразу все отправлять на принтер

Хотел задублировать "стандартное поведение пользователя", обычно щёлкают по кнопке печати с панели инструментов. Но Ваш вариант, тоже интересен, если не сложно опишите его. Будет больше способов решить задачу.

Заранее спасибо!
Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 568


« Ответ #6: 5 Апрель 2019, 16:23 »

как-то так:
Код:
sub Print_test
Dim oOpts(0) as New com.sun.star.beans.PropertyValue
Dim oRanges(0) As New com.sun.star.table.CellRangeAddress
 
  sh1=ThisComponent.Sheets(0)
' Если нужно задать область печати  
' oRanges(0).Sheet = 0
' oRanges(0).StartColumn = 0 : oRanges(0).StartRow = 0 'A1
' oRanges(0).EndColumn = 5 : oRanges(0).EndRow = 5 'f6
'
ThisComponent.CurrentController.setActiveSheet(sh1)  ' Активируем первый лист
'        ThisComponent.CurrentController.getActiveSheet().setPrintAreas(oRanges()) ' задает область печати
 
oOpts(0).Name = "Wait"   ' Параметры печати
oOpts(0).Value = True      ' Параметры печати
        
       ThisComponent.Print(oOpts()) ' Печатаем на принтере по умолчанию
  End Sub
« Последнее редактирование: 5 Апрель 2019, 16:25 от Bigor » Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!