LibreOffice API / UNO: как выровнять текст по горизонтали по правому краю в ячейке таблицы в модуле записи - PullRequest
0 голосов
/ 28 января 2020

Я использую C ++ для управления LibreOffice / OpenOffice из другого приложения, но, полагаю, вы можете мне помочь, если знаете также мост java. Поэтому в основном я хочу загрузить документ (работает), установить текст ячейки (работает) и установить горизонтальное выравнивание по ячейке таблицы (что я не знаю, как это сделать):

I do:

// Load Document
Reference <XInterface> rDoc = myLoader->loadComponentFromURL(...); 

// Get Table
Reference <XTextTablesSupplier> rTablesSuppl(rDocument, UNO_QUERY);
Any any = rTablesSuppl->getTextTables()->getByName("Table1");
Reference<XTextTable> rTable(any, UNO_QUERY);

// Set Text in cell
Reference<XCellRange> rRange (rTable, UNO_QUERY);
Reference<XCell> rCell = rRange->getCellByPosition(x, y);
Reference<XTextRange> rTextRange(rCell, UNO_QUERY);
rTextRange->setString("MyNewText");

// Align "MyNewText" right
????

Есть идеи, как продолжить?

1 Ответ

1 голос
/ 29 января 2020

Предостережение ... Хотя у меня есть опыт работы с C ++, я использую Java для программирования на LO API, поэтому следующее может быть немного не так. Вам, вероятно, придется немного подправить, чтобы все пошло на лад. * XCell xCell = xTextTable.getCellByName(cellname); XText xText = UnoRuntime.queryInterface(XText.class, xCell); XPropertySet xPropertySet = UnoRuntime.queryInterface(XPropertySet.class, xText.getStart()); xPropertySet.setPropertyValue("ParaAdjust", com.sun.star.style.ParagraphAdjust.RIGHT); В C ++ и с использованием положения ячейки, чтобы получить ячейку, я думаю, что грубый перевод будет выглядеть так:

Reference<XCell> rCell = rRange->getCellByPosition(x, y);
Reference<XText> rText(rCell, UNO_QUERY);
Reference< XPropertySet > xPropSet( rText->getStart(), UNO_QUERY );
xPropSet->getPropertyValue("ParaAdjust") >>= com::sun::star::style::ParagraphAdjust.RIGHT;

Учитывая то, что вы уже получили, это выглядит Вы можете заменить ???? на что-то вроде этого:

Reference< XPropertySet > xPropSet( rTextRange, UNO_QUERY );
xPropSet->getPropertyValue("ParaAdjust") >>= com::sun::star::style::ParagraphAdjust.RIGHT;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...