28.08.2017, 11:44 | #1 |
Участник
|
LibreOffice (OpenOffice) вставка строк из буфера обмена
Знатокам OpenOffice
Пытаюсь вставить в SCalc аналогично как в Excel: X++: void pasteData() { TextBuffer tb = new TextBuffer(); COM cell; Com dispatcher; COM controller; COM frame; ; tb.appendText('Поле11\tПоле21\tПоле31\tПоле41\tПоле51\n'); tb.appendText('Поле12\tПоле22\tПоле32\tПоле42\tПоле52\n'); tb.toClipboard(); dispatcher = app.CreateInstance('com.sun.star.frame.DispatchHelper'); cell = sheet.getCellRangeByName('A8'); controller = doc.GetCurrentController(); controller.select(Cell); frame = controller.GetFrame(); dispatcher.executeDispatch(frame, '.uno:Paste', '', 0, COMVariant::createFromArray(new Array(Types::Class))); } После нажатия на ОК все нормально вставляется. Как избавиться от запроса? Спасибо |
|
29.08.2017, 07:13 | #2 |
Участник
|
Поробуйте ".uno:ClipboardFormatItems"
PS: а еще вроде и вставать в ячейку можно с помощью ".uno:GoToCell" |
|
29.08.2017, 10:25 | #3 |
Участник
|
Не помогло. При простой замене операции вообще ничего не произошло (не вставило данные).
После добавления параметра (PropertyValue) 'SelectedFormat' опять получил диалог. Вставлять поячеечно можно, но, на примере Екселя, очень долго. Быстрее вставить всю таблицу одной командой |
|
29.08.2017, 10:57 | #4 |
Участник
|
Знатоки OpenOffice наверно сидят на OpenOffice форуме и обсуждают такие проблемы там
|
|
29.08.2017, 10:59 | #5 |
Участник
|
Цитата:
Я не про это, а про вашу подготовку с помощью cell и select. А вот в ссылке выше также подготавливают для вставки с помощью ".uno:GoToCell". Для однообразности так сказать попробуйте. |
|
29.08.2017, 15:35 | #6 |
Участник
|
Цитата:
Сообщение от Player1
Давайте тогда почитаем тут про ".uno:InsertRows" http://delphimaster.net/view/1-1222968605
Я не про это, а про вашу подготовку с помощью cell и select. А вот в ссылке выше также подготавливают для вставки с помощью ".uno:GoToCell". Для однообразности так сказать попробуйте. Проверил, это работает. Но необходимо вставить строки вставленные в буфер обмена из АХ с помощью TextBuffer. Подозреваю, что TextBuffer и SCalc копируют строки в буфер обмена по разному. Формат вроде одинаковый, может разница в кодировке, но я пока разницу не обнаружил. |
|
29.08.2017, 18:04 | #8 |
Участник
|
|
|
29.08.2017, 18:58 | #9 |
Участник
|
Проверил результат работы сервиса 'com.sun.star.datatransfer.clipboard.SystemClipboard' после копирования в буфер обмена из SCalc и из АХ (TextBuffed).
Для MimeType = text/plain;charset=utf-16 получил все идентично. НО OpenOffice создает в буфере обмена кучу записей со своим MimeType и наверное их использует для своей вставки, а если сторонние данные, то всегда будет диалог. |
|