You are viewing a plain text version of this content. The canonical link for it is here.
Posted to odf-users@incubator.apache.org by Andrew Willerding <aw...@itsurcom.com> on 2018/11/07 21:17:05 UTC
Copying font and alignment from existing table row
Hi,
I have an existing table that I am appending rows to and I want the new
rows to have the same font, alignment, etc as the rows previous to the
additions but I'm finding that the new rows appear in the default
document font style.
He's a snippet of code I've used to try to manipulate the cell fonts.
Cell cellItem =
newRow.getCellByIndex(cellIndex++);
cellItem.setStringValue(cell);
if (firstRow != null) {
System.out.println("Cell=" +
firstRow.getCellByIndex(cellIndex - 1).getStringValue());
// System.out.println("Cell=" +
firstRow.getCellByIndex(cellIndex -
1).getHorizontalAlignmentType().getAlignmentString());
System.out.println("Cell=" +
firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
System.out.println("Cell=" +
firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
//
cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
1).getHorizontalAlignmentType());
//cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
//cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
-1).getFont().getSize() - 2);
cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex -
1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
//
cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
1).getCellStyleName());
}
Except for the actual value of the cell, what prints out with the
System.out statements is not the actual font, font size, etc of the cell.
Is this a bug or am I not accessing and setting the values correctly?
I've been referencing this web page for trying to get my code to work
https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
Thanks,
Andrew
P.S. This list is very quiet but I'm hoping someone is reading it from
time to time.
Re: Copying font and alignment from existing table row
Posted by Andrew Willerding <aw...@itsurcom.com>.
Hi Svante,
I figured it out. I had a bug in my code below. I should have grabbed
the childNode of the cell where the text actually resides. So the line
Node cellNode = myFirstRowClone.getChildNodes().item(cellIndex++)
should actually be
Node cellNode =
myFirstRowClone.getChildNodes().item(cellIndex++).getFirstChild();
Thank you for helping me out and being my sounding board.
Andrew
On 2018-11-14 2:05 p.m., Svante Schubert wrote:
> Andrew,
>
> As I am in the middle of my tax - which I truly hate but I have to focus on
> it, but I will quickly try to assist:
> 1) One of the first things I did in ODFDOM, what Simple API is being forked
> of, is adding a debug function for OdfElement & OdfAttribute to give out
> XML, when I make a mouse hover in the IDE over the object, by overwriting
> the toString() method.
> Therefore I suggest not to cast to Node, but to OdfElement, or even more
> specific TableTableRowElement to get a better transparency during debugging.
> 2) Then debug and take a look if the objects are really existing. Only if
> you are taking XML nodes from another XML, you need to "import" them into
> the XML document, like document.import(xml, true); Only by reading the code
> I could not spot the problem, sry.
> 3) If you are still totally helpless send a full test function someone
> could copy/paste into a test class of Simple API like in
> simple/src/test/java/org/odftoolkit/simple/table/TableTest.java perhaps
> reuse an existing table test file or attach one with uncritical data. So
> debugging might be easier for one of us, but might take a while till I
> could jump on, but perhaps others might help :-)
>
> Good luck! :-)
> Svante
> ᐧ
>
> Am Mi., 14. Nov. 2018 um 19:29 Uhr schrieb Andrew Willerding <
> awillerding@itsurcom.com>:
>
>> Hi Svante,
>>
>> I apologize for this long posting in advance. Below my message I have
>> included three sections - my code, code output and the resultant FODT
>> extract.
>>
>> Thank you for your suggestion and guidance. I have implemented it but
>> I'm having some issues with the result. It doesn't appear that my
>> modifications to the table get saved into the final document for some
>> reason. The rows get appended but not with my cloned rows.
>>
>> In my code output below, I print out the xml of the table before I
>> append the cloned row and again afterwards and it appears to be properly
>> formed. However in the actual document FODT file that I also include
>> below, the row has been appended it doesn't appear to be with contents
>> of my modified table!
>>
>> Is there something else I'm missing - some sort of "commit" or other
>> modifications to the table element that need to be updated?
>>
>> Thanks,
>>
>> Andrew
>>
>>
>> Here's the code extract that I have written.
>>
>> TextDocument template = TextDocument.loadDocument(templateFile);
>> Table myTable = template.getTableByName(docSearchFieldName);
>> Node myFirstRow = myTable.getRowByIndex(1).getOdfElement();
>> System.out.println("@@@@@@MYTABLE-Before=" +
>> myTable.getRowByIndex(1).getOdfElement().getParentNode());
>>
>> List<List<String>> rowDatas = (List<List<String>>) fields.get(fieldName);
>> for (List<String> dataRow : rowDatas) {
>> if (myFirstRow != null) {
>> Integer cellIndex = 0;
>> Node myFirstRowClone = myFirstRow.cloneNode(true);
>> for (String cellData : dataRow) {
>> Node cellNode =
>> myFirstRowClone.getChildNodes().item(cellIndex++);
>> cellNode.setTextContent(cellData);
>> logItem("Template:" + templateFile.getName()
>> + ",FieldName:" + fieldName
>> + ",TableSetCellItem " + cellIndex + "=" + cellData,
>> Level.DEBUG);
>> }
>> System.out.println("---myFirstRowClone=" + myFirstRowClone);
>>
>> myTable.getRowByIndex(1).getOdfElement().getParentNode().appendChild(myFirstRowClone);
>> System.out.println("@@@@@@MYTABLE-After=" +
>> myTable.getRowByIndex(1).getOdfElement().getParentNode());
>> break;
>> }
>>
>> Here's the resultant output from the System.out statements:
>>
>> @@@@@@MYTABLE-Before=<table:table table:name="@TableReport"
>> table:style-name="_40_TableReport"><table:table-column
>> table:style-name="_40_TableReport.A"></table:table-column><table:table-column
>>
>> table:style-name="_40_TableReport.B"></table:table-column><table:table-column
>>
>> table:style-name="_40_TableReport.C"></table:table-column><table:table-header-rows><table:table-row><table:table-cell
>>
>> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
>> text:style-name="P11">Application</text:p></table:table-cell><table:table-cell
>>
>> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
>> text:style-name="P10">Code</text:p></table:table-cell><table:table-cell
>> office:value-type="string" table:style-name="_40_TableReport.C1"><text:p
>> text:style-name="P9">Count</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell
>>
>> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
>> text:style-name="P13">1</text:p></table:table-cell><table:table-cell
>> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
>> text:style-name="P14">2</text:p></table:table-cell><table:table-cell
>> office:value-type="string" table:style-name="_40_TableReport.C2"><text:p
>>
>> text:style-name="P15">3</text:p></table:table-cell></table:table-row></table:table>
>>
>>
>> 2018-11-14,08:52:35:195,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,Found
>>
>> table->@TableReport
>>
>> 2018-11-14,08:52:35:198,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
>>
>> 1=qd
>>
>> 2018-11-14,08:52:35:199,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
>>
>> 2=--ReportEndDate
>>
>> 2018-11-14,08:52:35:199,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
>>
>> 3=20181105
>>
>> ---myFirstRowClone=<table:table-row><table:table-cell
>> office:value-type="string"
>> table:style-name="_40_TableReport.A2">qd</table:table-cell><table:table-cell
>>
>> office:value-type="string"
>> table:style-name="_40_TableReport.A2">--ReportEndDate</table:table-cell><table:table-cell
>>
>> office:value-type="string"
>>
>> table:style-name="_40_TableReport.C2">20181105</table:table-cell></table:table-row>
>>
>> @@@@@@MYTABLE-After=<table:table table:name="@TableReport"
>> table:style-name="_40_TableReport"><table:table-column
>> table:style-name="_40_TableReport.A"></table:table-column><table:table-column
>>
>> table:style-name="_40_TableReport.B"></table:table-column><table:table-column
>>
>> table:style-name="_40_TableReport.C"></table:table-column><table:table-header-rows><table:table-row><table:table-cell
>>
>> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
>> text:style-name="P11">Application</text:p></table:table-cell><table:table-cell
>>
>> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
>> text:style-name="P10">Code</text:p></table:table-cell><table:table-cell
>> office:value-type="string" table:style-name="_40_TableReport.C1"><text:p
>> text:style-name="P9">Count</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell
>>
>> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
>> text:style-name="P13">1</text:p></table:table-cell><table:table-cell
>> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
>> text:style-name="P14">2</text:p></table:table-cell><table:table-cell
>> office:value-type="string" table:style-name="_40_TableReport.C2"><text:p
>> text:style-name="P15">3</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell
>>
>> office:value-type="string"
>> table:style-name="_40_TableReport.A2">qd</table:table-cell><table:table-cell
>>
>> office:value-type="string"
>> table:style-name="_40_TableReport.A2">--ReportEndDate</table:table-cell><table:table-cell
>>
>> office:value-type="string"
>>
>> table:style-name="_40_TableReport.C2">20181105</table:table-cell></table:table-row></table:table>
>>
>> And here is the resultant FODT file extract of the table
>>
>> <table:table table:name="@TableReport"
>> table:style-name="_40_TableReport">
>> <table:table-column table:style-name="_40_TableReport.A"/>
>> <table:table-column table:style-name="_40_TableReport.B"/>
>> <table:table-column table:style-name="_40_TableReport.C"/>
>> <table:table-header-rows>
>> <table:table-row>
>> <table:table-cell table:style-name="_40_TableReport.A1"
>> office:value-type="string">
>> <text:p text:style-name="P14">Application</text:p>
>> </table:table-cell>
>> <table:table-cell table:style-name="_40_TableReport.A1"
>> office:value-type="string">
>> <text:p text:style-name="P13">Code</text:p>
>> </table:table-cell>
>> <table:table-cell table:style-name="_40_TableReport.C1"
>> office:value-type="string">
>> <text:p text:style-name="P12">Count</text:p>
>> </table:table-cell>
>> </table:table-row>
>> </table:table-header-rows>
>> <table:table-row>
>> <table:table-cell table:style-name="_40_TableReport.A2"
>> office:value-type="string">
>> <text:p text:style-name="P2">1</text:p>
>> </table:table-cell>
>> <table:table-cell table:style-name="_40_TableReport.A2"
>> office:value-type="string">
>> <text:p text:style-name="P3">2</text:p>
>> </table:table-cell>
>> <table:table-cell table:style-name="_40_TableReport.C2"
>> office:value-type="string">
>> <text:p text:style-name="P4">3</text:p>
>> </table:table-cell>
>> </table:table-row>
>> <table:table-row>
>> <table:table-cell table:style-name="_40_TableReport.A2"
>> office:value-type="string">
>> <text:p text:style-name="Standard"/>
>> </table:table-cell>
>> <table:table-cell table:style-name="_40_TableReport.A2"
>> office:value-type="string">
>> <text:p text:style-name="Standard"/>
>> </table:table-cell>
>> <table:table-cell table:style-name="_40_TableReport.C2"
>> office:value-type="string">
>> <text:p text:style-name="Standard"/>
>> </table:table-cell>
>> </table:table-row>
>> </table:table>
>>
>> On 2018-11-12 2:23 p.m., Svante Schubert wrote:
>>> Andrew,
>>>
>>> I forgot to mention to basic approaches.
>>>
>>> 1. Create the before and after state of the desired document in your
>> ODF
>>> application of your choice. Save the document. Take a look at the
>> XML you
>>> need to create.
>>> 2. What I suggest and I am not sure if it exists is to go in the W3C
>> DOM
>>> tree to the previous row and clone it, which is basic DOM
>> functionality:
>>>
>> https://xerces.apache.org/xerces-j/apiDocs/org/w3c/dom/Node.html#cloneNode(boolean)
>>> Now it should help!
>>> Svante
>>> ᐧ
>>>
>>> Am Mo., 12. Nov. 2018 um 18:47 Uhr schrieb Svante Schubert <
>>> svante.schubert@gmail.com>:
>>>
>>>> Hi Andrew,
>>>>
>>>> Simple API is using underneath ODFDOM, which represents an ODF
>> Document.
>>>> The ODF Document is at least several zipped XML files.
>>>> For instance, each XML of the content.xml is represented by a W3C DOM
>>>> node. Therefore if you like to duplicate a row, being represented by a
>>>> <table:table-row> element you may also duplicate the TableTableElement
>>>> object.
>>>>
>>>> I guess the best way to proceed is to alter an existing test case of
>>>> ODFDOM or Simple API.
>>>>
>>>> Hopefully this could help you!
>>>> Svante
>>>> ᐧ
>>>>
>>>> Am Mo., 12. Nov. 2018 um 02:24 Uhr schrieb Andrew Willerding <
>>>> awillerding@itsurcom.com>:
>>>>
>>>>> Hi Svante,
>>>>>
>>>>> Thank you for your reply. I'm finding it difficult to find out what I
>>>>> need to Google to follow the path you suggested below. Do you have some
>>>>> examples or web sites or books that you could recommend as a good
>>>>> starting point?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Andrew
>>>>>
>>>>> On 2018-11-10 4:32 a.m., Svante Schubert wrote:
>>>>>> Hi Andrew,
>>>>>>
>>>>>> likely Simple API has not implemented that feature, but Simple API
>>>>> relies
>>>>>> on ODFDOM and that uses W3C DOM, so you might consider to clone/copy
>> the
>>>>>> previous table row.
>>>>>> Best is to take a look into the ODF XML to check if there are any IDs
>>>>> you
>>>>>> might need to adjust.
>>>>>>
>>>>>> Have a nice weekend,
>>>>>> Svante
>>>>>>
>>>>>> PS: I am personally using ODFDOM only, for instance currently I am
>>>>>> extracting table data from an EU specification to generate source code
>>>>> from.
>>>>>> Am Mi., 7. Nov. 2018 um 22:37 Uhr schrieb Andrew Willerding <
>>>>>> awillerding@itsurcom.com>:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I have an existing table that I am appending rows to and I want the
>> new
>>>>>>> rows to have the same font, alignment, etc as the rows previous to
>> the
>>>>>>> additions but I'm finding that the new rows appear in the default
>>>>>>> document font style.
>>>>>>>
>>>>>>> He's a snippet of code I've used to try to manipulate the cell fonts.
>>>>>>>
>>>>>>> Cell cellItem =
>>>>>>> newRow.getCellByIndex(cellIndex++);
>>>>>>> cellItem.setStringValue(cell);
>>>>>>> if (firstRow != null) {
>>>>>>> System.out.println("Cell=" +
>>>>>>> firstRow.getCellByIndex(cellIndex - 1).getStringValue());
>>>>>>> // System.out.println("Cell=" +
>>>>>>> firstRow.getCellByIndex(cellIndex -
>>>>>>> 1).getHorizontalAlignmentType().getAlignmentString());
>>>>>>> System.out.println("Cell=" +
>>>>>>> firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
>>>>>>> System.out.println("Cell=" +
>>>>>>> firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
>>>>>>> //
>>>>>>> cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
>>>>>>> 1).getHorizontalAlignmentType());
>>>>>>> //cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
>>>>>>> //cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
>>>>>>> -1).getFont().getSize() - 2);
>>>>>>> cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex
>> -
>>>>>>> 1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
>>>>>>> //
>>>>>>> cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
>>>>>>> 1).getCellStyleName());
>>>>>>> }
>>>>>>>
>>>>>>> Except for the actual value of the cell, what prints out with the
>>>>>>> System.out statements is not the actual font, font size, etc of the
>>>>> cell.
>>>>>>> Is this a bug or am I not accessing and setting the values correctly?
>>>>>>> I've been referencing this web page for trying to get my code to work
>>>>>>>
>>>>>>>
>>>>>>>
>> https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Andrew
>>>>>>>
>>>>>>> P.S. This list is very quiet but I'm hoping someone is reading it
>> from
>>>>>>> time to time.
>>>>>>>
>>>>>>>
Re: Copying font and alignment from existing table row
Posted by Svante Schubert <sv...@gmail.com>.
Andrew,
As I am in the middle of my tax - which I truly hate but I have to focus on
it, but I will quickly try to assist:
1) One of the first things I did in ODFDOM, what Simple API is being forked
of, is adding a debug function for OdfElement & OdfAttribute to give out
XML, when I make a mouse hover in the IDE over the object, by overwriting
the toString() method.
Therefore I suggest not to cast to Node, but to OdfElement, or even more
specific TableTableRowElement to get a better transparency during debugging.
2) Then debug and take a look if the objects are really existing. Only if
you are taking XML nodes from another XML, you need to "import" them into
the XML document, like document.import(xml, true); Only by reading the code
I could not spot the problem, sry.
3) If you are still totally helpless send a full test function someone
could copy/paste into a test class of Simple API like in
simple/src/test/java/org/odftoolkit/simple/table/TableTest.java perhaps
reuse an existing table test file or attach one with uncritical data. So
debugging might be easier for one of us, but might take a while till I
could jump on, but perhaps others might help :-)
Good luck! :-)
Svante
ᐧ
Am Mi., 14. Nov. 2018 um 19:29 Uhr schrieb Andrew Willerding <
awillerding@itsurcom.com>:
> Hi Svante,
>
> I apologize for this long posting in advance. Below my message I have
> included three sections - my code, code output and the resultant FODT
> extract.
>
> Thank you for your suggestion and guidance. I have implemented it but
> I'm having some issues with the result. It doesn't appear that my
> modifications to the table get saved into the final document for some
> reason. The rows get appended but not with my cloned rows.
>
> In my code output below, I print out the xml of the table before I
> append the cloned row and again afterwards and it appears to be properly
> formed. However in the actual document FODT file that I also include
> below, the row has been appended it doesn't appear to be with contents
> of my modified table!
>
> Is there something else I'm missing - some sort of "commit" or other
> modifications to the table element that need to be updated?
>
> Thanks,
>
> Andrew
>
>
> Here's the code extract that I have written.
>
> TextDocument template = TextDocument.loadDocument(templateFile);
> Table myTable = template.getTableByName(docSearchFieldName);
> Node myFirstRow = myTable.getRowByIndex(1).getOdfElement();
> System.out.println("@@@@@@MYTABLE-Before=" +
> myTable.getRowByIndex(1).getOdfElement().getParentNode());
>
> List<List<String>> rowDatas = (List<List<String>>) fields.get(fieldName);
> for (List<String> dataRow : rowDatas) {
> if (myFirstRow != null) {
> Integer cellIndex = 0;
> Node myFirstRowClone = myFirstRow.cloneNode(true);
> for (String cellData : dataRow) {
> Node cellNode =
> myFirstRowClone.getChildNodes().item(cellIndex++);
> cellNode.setTextContent(cellData);
> logItem("Template:" + templateFile.getName()
> + ",FieldName:" + fieldName
> + ",TableSetCellItem " + cellIndex + "=" + cellData,
> Level.DEBUG);
> }
> System.out.println("---myFirstRowClone=" + myFirstRowClone);
>
> myTable.getRowByIndex(1).getOdfElement().getParentNode().appendChild(myFirstRowClone);
> System.out.println("@@@@@@MYTABLE-After=" +
> myTable.getRowByIndex(1).getOdfElement().getParentNode());
> break;
> }
>
> Here's the resultant output from the System.out statements:
>
> @@@@@@MYTABLE-Before=<table:table table:name="@TableReport"
> table:style-name="_40_TableReport"><table:table-column
> table:style-name="_40_TableReport.A"></table:table-column><table:table-column
>
> table:style-name="_40_TableReport.B"></table:table-column><table:table-column
>
> table:style-name="_40_TableReport.C"></table:table-column><table:table-header-rows><table:table-row><table:table-cell
>
> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
> text:style-name="P11">Application</text:p></table:table-cell><table:table-cell
>
> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
> text:style-name="P10">Code</text:p></table:table-cell><table:table-cell
> office:value-type="string" table:style-name="_40_TableReport.C1"><text:p
> text:style-name="P9">Count</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell
>
> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
> text:style-name="P13">1</text:p></table:table-cell><table:table-cell
> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
> text:style-name="P14">2</text:p></table:table-cell><table:table-cell
> office:value-type="string" table:style-name="_40_TableReport.C2"><text:p
>
> text:style-name="P15">3</text:p></table:table-cell></table:table-row></table:table>
>
>
> 2018-11-14,08:52:35:195,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,Found
>
> table->@TableReport
>
> 2018-11-14,08:52:35:198,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
>
> 1=qd
>
> 2018-11-14,08:52:35:199,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
>
> 2=--ReportEndDate
>
> 2018-11-14,08:52:35:199,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
>
> 3=20181105
>
> ---myFirstRowClone=<table:table-row><table:table-cell
> office:value-type="string"
> table:style-name="_40_TableReport.A2">qd</table:table-cell><table:table-cell
>
> office:value-type="string"
> table:style-name="_40_TableReport.A2">--ReportEndDate</table:table-cell><table:table-cell
>
> office:value-type="string"
>
> table:style-name="_40_TableReport.C2">20181105</table:table-cell></table:table-row>
>
> @@@@@@MYTABLE-After=<table:table table:name="@TableReport"
> table:style-name="_40_TableReport"><table:table-column
> table:style-name="_40_TableReport.A"></table:table-column><table:table-column
>
> table:style-name="_40_TableReport.B"></table:table-column><table:table-column
>
> table:style-name="_40_TableReport.C"></table:table-column><table:table-header-rows><table:table-row><table:table-cell
>
> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
> text:style-name="P11">Application</text:p></table:table-cell><table:table-cell
>
> office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
> text:style-name="P10">Code</text:p></table:table-cell><table:table-cell
> office:value-type="string" table:style-name="_40_TableReport.C1"><text:p
> text:style-name="P9">Count</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell
>
> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
> text:style-name="P13">1</text:p></table:table-cell><table:table-cell
> office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
> text:style-name="P14">2</text:p></table:table-cell><table:table-cell
> office:value-type="string" table:style-name="_40_TableReport.C2"><text:p
> text:style-name="P15">3</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell
>
> office:value-type="string"
> table:style-name="_40_TableReport.A2">qd</table:table-cell><table:table-cell
>
> office:value-type="string"
> table:style-name="_40_TableReport.A2">--ReportEndDate</table:table-cell><table:table-cell
>
> office:value-type="string"
>
> table:style-name="_40_TableReport.C2">20181105</table:table-cell></table:table-row></table:table>
>
> And here is the resultant FODT file extract of the table
>
> <table:table table:name="@TableReport"
> table:style-name="_40_TableReport">
> <table:table-column table:style-name="_40_TableReport.A"/>
> <table:table-column table:style-name="_40_TableReport.B"/>
> <table:table-column table:style-name="_40_TableReport.C"/>
> <table:table-header-rows>
> <table:table-row>
> <table:table-cell table:style-name="_40_TableReport.A1"
> office:value-type="string">
> <text:p text:style-name="P14">Application</text:p>
> </table:table-cell>
> <table:table-cell table:style-name="_40_TableReport.A1"
> office:value-type="string">
> <text:p text:style-name="P13">Code</text:p>
> </table:table-cell>
> <table:table-cell table:style-name="_40_TableReport.C1"
> office:value-type="string">
> <text:p text:style-name="P12">Count</text:p>
> </table:table-cell>
> </table:table-row>
> </table:table-header-rows>
> <table:table-row>
> <table:table-cell table:style-name="_40_TableReport.A2"
> office:value-type="string">
> <text:p text:style-name="P2">1</text:p>
> </table:table-cell>
> <table:table-cell table:style-name="_40_TableReport.A2"
> office:value-type="string">
> <text:p text:style-name="P3">2</text:p>
> </table:table-cell>
> <table:table-cell table:style-name="_40_TableReport.C2"
> office:value-type="string">
> <text:p text:style-name="P4">3</text:p>
> </table:table-cell>
> </table:table-row>
> <table:table-row>
> <table:table-cell table:style-name="_40_TableReport.A2"
> office:value-type="string">
> <text:p text:style-name="Standard"/>
> </table:table-cell>
> <table:table-cell table:style-name="_40_TableReport.A2"
> office:value-type="string">
> <text:p text:style-name="Standard"/>
> </table:table-cell>
> <table:table-cell table:style-name="_40_TableReport.C2"
> office:value-type="string">
> <text:p text:style-name="Standard"/>
> </table:table-cell>
> </table:table-row>
> </table:table>
>
> On 2018-11-12 2:23 p.m., Svante Schubert wrote:
> > Andrew,
> >
> > I forgot to mention to basic approaches.
> >
> > 1. Create the before and after state of the desired document in your
> ODF
> > application of your choice. Save the document. Take a look at the
> XML you
> > need to create.
> > 2. What I suggest and I am not sure if it exists is to go in the W3C
> DOM
> > tree to the previous row and clone it, which is basic DOM
> functionality:
> >
> >
> https://xerces.apache.org/xerces-j/apiDocs/org/w3c/dom/Node.html#cloneNode(boolean)
> >
> > Now it should help!
> > Svante
> > ᐧ
> >
> > Am Mo., 12. Nov. 2018 um 18:47 Uhr schrieb Svante Schubert <
> > svante.schubert@gmail.com>:
> >
> >> Hi Andrew,
> >>
> >> Simple API is using underneath ODFDOM, which represents an ODF
> Document.
> >> The ODF Document is at least several zipped XML files.
> >> For instance, each XML of the content.xml is represented by a W3C DOM
> >> node. Therefore if you like to duplicate a row, being represented by a
> >> <table:table-row> element you may also duplicate the TableTableElement
> >> object.
> >>
> >> I guess the best way to proceed is to alter an existing test case of
> >> ODFDOM or Simple API.
> >>
> >> Hopefully this could help you!
> >> Svante
> >> ᐧ
> >>
> >> Am Mo., 12. Nov. 2018 um 02:24 Uhr schrieb Andrew Willerding <
> >> awillerding@itsurcom.com>:
> >>
> >>> Hi Svante,
> >>>
> >>> Thank you for your reply. I'm finding it difficult to find out what I
> >>> need to Google to follow the path you suggested below. Do you have some
> >>> examples or web sites or books that you could recommend as a good
> >>> starting point?
> >>>
> >>> Thanks,
> >>>
> >>> Andrew
> >>>
> >>> On 2018-11-10 4:32 a.m., Svante Schubert wrote:
> >>>> Hi Andrew,
> >>>>
> >>>> likely Simple API has not implemented that feature, but Simple API
> >>> relies
> >>>> on ODFDOM and that uses W3C DOM, so you might consider to clone/copy
> the
> >>>> previous table row.
> >>>> Best is to take a look into the ODF XML to check if there are any IDs
> >>> you
> >>>> might need to adjust.
> >>>>
> >>>> Have a nice weekend,
> >>>> Svante
> >>>>
> >>>> PS: I am personally using ODFDOM only, for instance currently I am
> >>>> extracting table data from an EU specification to generate source code
> >>> from.
> >>>>
> >>>> Am Mi., 7. Nov. 2018 um 22:37 Uhr schrieb Andrew Willerding <
> >>>> awillerding@itsurcom.com>:
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> I have an existing table that I am appending rows to and I want the
> new
> >>>>> rows to have the same font, alignment, etc as the rows previous to
> the
> >>>>> additions but I'm finding that the new rows appear in the default
> >>>>> document font style.
> >>>>>
> >>>>> He's a snippet of code I've used to try to manipulate the cell fonts.
> >>>>>
> >>>>> Cell cellItem =
> >>>>> newRow.getCellByIndex(cellIndex++);
> >>>>> cellItem.setStringValue(cell);
> >>>>> if (firstRow != null) {
> >>>>> System.out.println("Cell=" +
> >>>>> firstRow.getCellByIndex(cellIndex - 1).getStringValue());
> >>>>> // System.out.println("Cell=" +
> >>>>> firstRow.getCellByIndex(cellIndex -
> >>>>> 1).getHorizontalAlignmentType().getAlignmentString());
> >>>>> System.out.println("Cell=" +
> >>>>> firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
> >>>>> System.out.println("Cell=" +
> >>>>> firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
> >>>>> //
> >>>>> cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
> >>>>> 1).getHorizontalAlignmentType());
> >>>>> //cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
> >>>>> //cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
> >>>>> -1).getFont().getSize() - 2);
> >>>>> cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex
> -
> >>>>> 1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
> >>>>> //
> >>>>> cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
> >>>>> 1).getCellStyleName());
> >>>>> }
> >>>>>
> >>>>> Except for the actual value of the cell, what prints out with the
> >>>>> System.out statements is not the actual font, font size, etc of the
> >>> cell.
> >>>>> Is this a bug or am I not accessing and setting the values correctly?
> >>>>> I've been referencing this web page for trying to get my code to work
> >>>>>
> >>>>>
> >>>>>
> >>>
> https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
> >>>>> Thanks,
> >>>>>
> >>>>> Andrew
> >>>>>
> >>>>> P.S. This list is very quiet but I'm hoping someone is reading it
> from
> >>>>> time to time.
> >>>>>
> >>>>>
>
Re: Copying font and alignment from existing table row
Posted by Andrew Willerding <aw...@itsurcom.com>.
Hi Svante,
I apologize for this long posting in advance. Below my message I have
included three sections - my code, code output and the resultant FODT
extract.
Thank you for your suggestion and guidance. I have implemented it but
I'm having some issues with the result. It doesn't appear that my
modifications to the table get saved into the final document for some
reason. The rows get appended but not with my cloned rows.
In my code output below, I print out the xml of the table before I
append the cloned row and again afterwards and it appears to be properly
formed. However in the actual document FODT file that I also include
below, the row has been appended it doesn't appear to be with contents
of my modified table!
Is there something else I'm missing - some sort of "commit" or other
modifications to the table element that need to be updated?
Thanks,
Andrew
Here's the code extract that I have written.
TextDocument template = TextDocument.loadDocument(templateFile);
Table myTable = template.getTableByName(docSearchFieldName);
Node myFirstRow = myTable.getRowByIndex(1).getOdfElement();
System.out.println("@@@@@@MYTABLE-Before=" +
myTable.getRowByIndex(1).getOdfElement().getParentNode());
List<List<String>> rowDatas = (List<List<String>>) fields.get(fieldName);
for (List<String> dataRow : rowDatas) {
if (myFirstRow != null) {
Integer cellIndex = 0;
Node myFirstRowClone = myFirstRow.cloneNode(true);
for (String cellData : dataRow) {
Node cellNode =
myFirstRowClone.getChildNodes().item(cellIndex++);
cellNode.setTextContent(cellData);
logItem("Template:" + templateFile.getName()
+ ",FieldName:" + fieldName
+ ",TableSetCellItem " + cellIndex + "=" + cellData,
Level.DEBUG);
}
System.out.println("---myFirstRowClone=" + myFirstRowClone);
myTable.getRowByIndex(1).getOdfElement().getParentNode().appendChild(myFirstRowClone);
System.out.println("@@@@@@MYTABLE-After=" +
myTable.getRowByIndex(1).getOdfElement().getParentNode());
break;
}
Here's the resultant output from the System.out statements:
@@@@@@MYTABLE-Before=<table:table table:name="@TableReport"
table:style-name="_40_TableReport"><table:table-column
table:style-name="_40_TableReport.A"></table:table-column><table:table-column
table:style-name="_40_TableReport.B"></table:table-column><table:table-column
table:style-name="_40_TableReport.C"></table:table-column><table:table-header-rows><table:table-row><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
text:style-name="P11">Application</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
text:style-name="P10">Code</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.C1"><text:p
text:style-name="P9">Count</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
text:style-name="P13">1</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
text:style-name="P14">2</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.C2"><text:p
text:style-name="P15">3</text:p></table:table-cell></table:table-row></table:table>
2018-11-14,08:52:35:195,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,Found
table->@TableReport
2018-11-14,08:52:35:198,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
1=qd
2018-11-14,08:52:35:199,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
2=--ReportEndDate
2018-11-14,08:52:35:199,DEBUG,[http-nio-8080-exec-94],,Template:ActivityLogReport.odt,FieldName:@TableReport,TableSetCellItem
3=20181105
---myFirstRowClone=<table:table-row><table:table-cell
office:value-type="string"
table:style-name="_40_TableReport.A2">qd</table:table-cell><table:table-cell
office:value-type="string"
table:style-name="_40_TableReport.A2">--ReportEndDate</table:table-cell><table:table-cell
office:value-type="string"
table:style-name="_40_TableReport.C2">20181105</table:table-cell></table:table-row>
@@@@@@MYTABLE-After=<table:table table:name="@TableReport"
table:style-name="_40_TableReport"><table:table-column
table:style-name="_40_TableReport.A"></table:table-column><table:table-column
table:style-name="_40_TableReport.B"></table:table-column><table:table-column
table:style-name="_40_TableReport.C"></table:table-column><table:table-header-rows><table:table-row><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
text:style-name="P11">Application</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A1"><text:p
text:style-name="P10">Code</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.C1"><text:p
text:style-name="P9">Count</text:p></table:table-cell></table:table-row></table:table-header-rows><table:table-row><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
text:style-name="P13">1</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.A2"><text:p
text:style-name="P14">2</text:p></table:table-cell><table:table-cell
office:value-type="string" table:style-name="_40_TableReport.C2"><text:p
text:style-name="P15">3</text:p></table:table-cell></table:table-row><table:table-row><table:table-cell
office:value-type="string"
table:style-name="_40_TableReport.A2">qd</table:table-cell><table:table-cell
office:value-type="string"
table:style-name="_40_TableReport.A2">--ReportEndDate</table:table-cell><table:table-cell
office:value-type="string"
table:style-name="_40_TableReport.C2">20181105</table:table-cell></table:table-row></table:table>
And here is the resultant FODT file extract of the table
<table:table table:name="@TableReport"
table:style-name="_40_TableReport">
<table:table-column table:style-name="_40_TableReport.A"/>
<table:table-column table:style-name="_40_TableReport.B"/>
<table:table-column table:style-name="_40_TableReport.C"/>
<table:table-header-rows>
<table:table-row>
<table:table-cell table:style-name="_40_TableReport.A1"
office:value-type="string">
<text:p text:style-name="P14">Application</text:p>
</table:table-cell>
<table:table-cell table:style-name="_40_TableReport.A1"
office:value-type="string">
<text:p text:style-name="P13">Code</text:p>
</table:table-cell>
<table:table-cell table:style-name="_40_TableReport.C1"
office:value-type="string">
<text:p text:style-name="P12">Count</text:p>
</table:table-cell>
</table:table-row>
</table:table-header-rows>
<table:table-row>
<table:table-cell table:style-name="_40_TableReport.A2"
office:value-type="string">
<text:p text:style-name="P2">1</text:p>
</table:table-cell>
<table:table-cell table:style-name="_40_TableReport.A2"
office:value-type="string">
<text:p text:style-name="P3">2</text:p>
</table:table-cell>
<table:table-cell table:style-name="_40_TableReport.C2"
office:value-type="string">
<text:p text:style-name="P4">3</text:p>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="_40_TableReport.A2"
office:value-type="string">
<text:p text:style-name="Standard"/>
</table:table-cell>
<table:table-cell table:style-name="_40_TableReport.A2"
office:value-type="string">
<text:p text:style-name="Standard"/>
</table:table-cell>
<table:table-cell table:style-name="_40_TableReport.C2"
office:value-type="string">
<text:p text:style-name="Standard"/>
</table:table-cell>
</table:table-row>
</table:table>
On 2018-11-12 2:23 p.m., Svante Schubert wrote:
> Andrew,
>
> I forgot to mention to basic approaches.
>
> 1. Create the before and after state of the desired document in your ODF
> application of your choice. Save the document. Take a look at the XML you
> need to create.
> 2. What I suggest and I am not sure if it exists is to go in the W3C DOM
> tree to the previous row and clone it, which is basic DOM functionality:
>
> https://xerces.apache.org/xerces-j/apiDocs/org/w3c/dom/Node.html#cloneNode(boolean)
>
> Now it should help!
> Svante
> ᐧ
>
> Am Mo., 12. Nov. 2018 um 18:47 Uhr schrieb Svante Schubert <
> svante.schubert@gmail.com>:
>
>> Hi Andrew,
>>
>> Simple API is using underneath ODFDOM, which represents an ODF Document.
>> The ODF Document is at least several zipped XML files.
>> For instance, each XML of the content.xml is represented by a W3C DOM
>> node. Therefore if you like to duplicate a row, being represented by a
>> <table:table-row> element you may also duplicate the TableTableElement
>> object.
>>
>> I guess the best way to proceed is to alter an existing test case of
>> ODFDOM or Simple API.
>>
>> Hopefully this could help you!
>> Svante
>> ᐧ
>>
>> Am Mo., 12. Nov. 2018 um 02:24 Uhr schrieb Andrew Willerding <
>> awillerding@itsurcom.com>:
>>
>>> Hi Svante,
>>>
>>> Thank you for your reply. I'm finding it difficult to find out what I
>>> need to Google to follow the path you suggested below. Do you have some
>>> examples or web sites or books that you could recommend as a good
>>> starting point?
>>>
>>> Thanks,
>>>
>>> Andrew
>>>
>>> On 2018-11-10 4:32 a.m., Svante Schubert wrote:
>>>> Hi Andrew,
>>>>
>>>> likely Simple API has not implemented that feature, but Simple API
>>> relies
>>>> on ODFDOM and that uses W3C DOM, so you might consider to clone/copy the
>>>> previous table row.
>>>> Best is to take a look into the ODF XML to check if there are any IDs
>>> you
>>>> might need to adjust.
>>>>
>>>> Have a nice weekend,
>>>> Svante
>>>>
>>>> PS: I am personally using ODFDOM only, for instance currently I am
>>>> extracting table data from an EU specification to generate source code
>>> from.
>>>>
>>>> Am Mi., 7. Nov. 2018 um 22:37 Uhr schrieb Andrew Willerding <
>>>> awillerding@itsurcom.com>:
>>>>
>>>>> Hi,
>>>>>
>>>>> I have an existing table that I am appending rows to and I want the new
>>>>> rows to have the same font, alignment, etc as the rows previous to the
>>>>> additions but I'm finding that the new rows appear in the default
>>>>> document font style.
>>>>>
>>>>> He's a snippet of code I've used to try to manipulate the cell fonts.
>>>>>
>>>>> Cell cellItem =
>>>>> newRow.getCellByIndex(cellIndex++);
>>>>> cellItem.setStringValue(cell);
>>>>> if (firstRow != null) {
>>>>> System.out.println("Cell=" +
>>>>> firstRow.getCellByIndex(cellIndex - 1).getStringValue());
>>>>> // System.out.println("Cell=" +
>>>>> firstRow.getCellByIndex(cellIndex -
>>>>> 1).getHorizontalAlignmentType().getAlignmentString());
>>>>> System.out.println("Cell=" +
>>>>> firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
>>>>> System.out.println("Cell=" +
>>>>> firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
>>>>> //
>>>>> cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
>>>>> 1).getHorizontalAlignmentType());
>>>>> //cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
>>>>> //cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
>>>>> -1).getFont().getSize() - 2);
>>>>> cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex -
>>>>> 1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
>>>>> //
>>>>> cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
>>>>> 1).getCellStyleName());
>>>>> }
>>>>>
>>>>> Except for the actual value of the cell, what prints out with the
>>>>> System.out statements is not the actual font, font size, etc of the
>>> cell.
>>>>> Is this a bug or am I not accessing and setting the values correctly?
>>>>> I've been referencing this web page for trying to get my code to work
>>>>>
>>>>>
>>>>>
>>> https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
>>>>> Thanks,
>>>>>
>>>>> Andrew
>>>>>
>>>>> P.S. This list is very quiet but I'm hoping someone is reading it from
>>>>> time to time.
>>>>>
>>>>>
Re: Copying font and alignment from existing table row
Posted by Svante Schubert <sv...@gmail.com>.
Andrew,
I forgot to mention to basic approaches.
1. Create the before and after state of the desired document in your ODF
application of your choice. Save the document. Take a look at the XML you
need to create.
2. What I suggest and I am not sure if it exists is to go in the W3C DOM
tree to the previous row and clone it, which is basic DOM functionality:
https://xerces.apache.org/xerces-j/apiDocs/org/w3c/dom/Node.html#cloneNode(boolean)
Now it should help!
Svante
ᐧ
Am Mo., 12. Nov. 2018 um 18:47 Uhr schrieb Svante Schubert <
svante.schubert@gmail.com>:
> Hi Andrew,
>
> Simple API is using underneath ODFDOM, which represents an ODF Document.
> The ODF Document is at least several zipped XML files.
> For instance, each XML of the content.xml is represented by a W3C DOM
> node. Therefore if you like to duplicate a row, being represented by a
> <table:table-row> element you may also duplicate the TableTableElement
> object.
>
> I guess the best way to proceed is to alter an existing test case of
> ODFDOM or Simple API.
>
> Hopefully this could help you!
> Svante
> ᐧ
>
> Am Mo., 12. Nov. 2018 um 02:24 Uhr schrieb Andrew Willerding <
> awillerding@itsurcom.com>:
>
>> Hi Svante,
>>
>> Thank you for your reply. I'm finding it difficult to find out what I
>> need to Google to follow the path you suggested below. Do you have some
>> examples or web sites or books that you could recommend as a good
>> starting point?
>>
>> Thanks,
>>
>> Andrew
>>
>> On 2018-11-10 4:32 a.m., Svante Schubert wrote:
>> > Hi Andrew,
>> >
>> > likely Simple API has not implemented that feature, but Simple API
>> relies
>> > on ODFDOM and that uses W3C DOM, so you might consider to clone/copy the
>> > previous table row.
>> > Best is to take a look into the ODF XML to check if there are any IDs
>> you
>> > might need to adjust.
>> >
>> > Have a nice weekend,
>> > Svante
>> >
>> > PS: I am personally using ODFDOM only, for instance currently I am
>> > extracting table data from an EU specification to generate source code
>> from.
>> >
>> >
>> > Am Mi., 7. Nov. 2018 um 22:37 Uhr schrieb Andrew Willerding <
>> > awillerding@itsurcom.com>:
>> >
>> >> Hi,
>> >>
>> >> I have an existing table that I am appending rows to and I want the new
>> >> rows to have the same font, alignment, etc as the rows previous to the
>> >> additions but I'm finding that the new rows appear in the default
>> >> document font style.
>> >>
>> >> He's a snippet of code I've used to try to manipulate the cell fonts.
>> >>
>> >> Cell cellItem =
>> >> newRow.getCellByIndex(cellIndex++);
>> >> cellItem.setStringValue(cell);
>> >> if (firstRow != null) {
>> >> System.out.println("Cell=" +
>> >> firstRow.getCellByIndex(cellIndex - 1).getStringValue());
>> >> // System.out.println("Cell=" +
>> >> firstRow.getCellByIndex(cellIndex -
>> >> 1).getHorizontalAlignmentType().getAlignmentString());
>> >> System.out.println("Cell=" +
>> >> firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
>> >> System.out.println("Cell=" +
>> >> firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
>> >> //
>> >> cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
>> >> 1).getHorizontalAlignmentType());
>> >> //cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
>> >> //cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
>> >> -1).getFont().getSize() - 2);
>> >> cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex -
>> >> 1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
>> >> //
>> >> cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
>> >> 1).getCellStyleName());
>> >> }
>> >>
>> >> Except for the actual value of the cell, what prints out with the
>> >> System.out statements is not the actual font, font size, etc of the
>> cell.
>> >>
>> >> Is this a bug or am I not accessing and setting the values correctly?
>> >> I've been referencing this web page for trying to get my code to work
>> >>
>> >>
>> >>
>> https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
>> >>
>> >> Thanks,
>> >>
>> >> Andrew
>> >>
>> >> P.S. This list is very quiet but I'm hoping someone is reading it from
>> >> time to time.
>> >>
>> >>
>>
>
Re: Copying font and alignment from existing table row
Posted by Svante Schubert <sv...@gmail.com>.
Hi Andrew,
Simple API is using underneath ODFDOM, which represents an ODF Document.
The ODF Document is at least several zipped XML files.
For instance, each XML of the content.xml is represented by a W3C DOM node.
Therefore if you like to duplicate a row, being represented by a
<table:table-row> element you may also duplicate the TableTableElement
object.
I guess the best way to proceed is to alter an existing test case of ODFDOM
or Simple API.
Hopefully this could help you!
Svante
ᐧ
Am Mo., 12. Nov. 2018 um 02:24 Uhr schrieb Andrew Willerding <
awillerding@itsurcom.com>:
> Hi Svante,
>
> Thank you for your reply. I'm finding it difficult to find out what I
> need to Google to follow the path you suggested below. Do you have some
> examples or web sites or books that you could recommend as a good
> starting point?
>
> Thanks,
>
> Andrew
>
> On 2018-11-10 4:32 a.m., Svante Schubert wrote:
> > Hi Andrew,
> >
> > likely Simple API has not implemented that feature, but Simple API relies
> > on ODFDOM and that uses W3C DOM, so you might consider to clone/copy the
> > previous table row.
> > Best is to take a look into the ODF XML to check if there are any IDs you
> > might need to adjust.
> >
> > Have a nice weekend,
> > Svante
> >
> > PS: I am personally using ODFDOM only, for instance currently I am
> > extracting table data from an EU specification to generate source code
> from.
> >
> >
> > Am Mi., 7. Nov. 2018 um 22:37 Uhr schrieb Andrew Willerding <
> > awillerding@itsurcom.com>:
> >
> >> Hi,
> >>
> >> I have an existing table that I am appending rows to and I want the new
> >> rows to have the same font, alignment, etc as the rows previous to the
> >> additions but I'm finding that the new rows appear in the default
> >> document font style.
> >>
> >> He's a snippet of code I've used to try to manipulate the cell fonts.
> >>
> >> Cell cellItem =
> >> newRow.getCellByIndex(cellIndex++);
> >> cellItem.setStringValue(cell);
> >> if (firstRow != null) {
> >> System.out.println("Cell=" +
> >> firstRow.getCellByIndex(cellIndex - 1).getStringValue());
> >> // System.out.println("Cell=" +
> >> firstRow.getCellByIndex(cellIndex -
> >> 1).getHorizontalAlignmentType().getAlignmentString());
> >> System.out.println("Cell=" +
> >> firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
> >> System.out.println("Cell=" +
> >> firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
> >> //
> >> cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
> >> 1).getHorizontalAlignmentType());
> >> //cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
> >> //cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
> >> -1).getFont().getSize() - 2);
> >> cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex -
> >> 1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
> >> //
> >> cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
> >> 1).getCellStyleName());
> >> }
> >>
> >> Except for the actual value of the cell, what prints out with the
> >> System.out statements is not the actual font, font size, etc of the
> cell.
> >>
> >> Is this a bug or am I not accessing and setting the values correctly?
> >> I've been referencing this web page for trying to get my code to work
> >>
> >>
> >>
> https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
> >>
> >> Thanks,
> >>
> >> Andrew
> >>
> >> P.S. This list is very quiet but I'm hoping someone is reading it from
> >> time to time.
> >>
> >>
>
Re: Copying font and alignment from existing table row
Posted by Andrew Willerding <aw...@itsurcom.com>.
Hi Svante,
Thank you for your reply. I'm finding it difficult to find out what I
need to Google to follow the path you suggested below. Do you have some
examples or web sites or books that you could recommend as a good
starting point?
Thanks,
Andrew
On 2018-11-10 4:32 a.m., Svante Schubert wrote:
> Hi Andrew,
>
> likely Simple API has not implemented that feature, but Simple API relies
> on ODFDOM and that uses W3C DOM, so you might consider to clone/copy the
> previous table row.
> Best is to take a look into the ODF XML to check if there are any IDs you
> might need to adjust.
>
> Have a nice weekend,
> Svante
>
> PS: I am personally using ODFDOM only, for instance currently I am
> extracting table data from an EU specification to generate source code from.
>
>
> Am Mi., 7. Nov. 2018 um 22:37 Uhr schrieb Andrew Willerding <
> awillerding@itsurcom.com>:
>
>> Hi,
>>
>> I have an existing table that I am appending rows to and I want the new
>> rows to have the same font, alignment, etc as the rows previous to the
>> additions but I'm finding that the new rows appear in the default
>> document font style.
>>
>> He's a snippet of code I've used to try to manipulate the cell fonts.
>>
>> Cell cellItem =
>> newRow.getCellByIndex(cellIndex++);
>> cellItem.setStringValue(cell);
>> if (firstRow != null) {
>> System.out.println("Cell=" +
>> firstRow.getCellByIndex(cellIndex - 1).getStringValue());
>> // System.out.println("Cell=" +
>> firstRow.getCellByIndex(cellIndex -
>> 1).getHorizontalAlignmentType().getAlignmentString());
>> System.out.println("Cell=" +
>> firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
>> System.out.println("Cell=" +
>> firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
>> //
>> cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
>> 1).getHorizontalAlignmentType());
>> //cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
>> //cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
>> -1).getFont().getSize() - 2);
>> cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex -
>> 1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
>> //
>> cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
>> 1).getCellStyleName());
>> }
>>
>> Except for the actual value of the cell, what prints out with the
>> System.out statements is not the actual font, font size, etc of the cell.
>>
>> Is this a bug or am I not accessing and setting the values correctly?
>> I've been referencing this web page for trying to get my code to work
>>
>>
>> https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
>>
>> Thanks,
>>
>> Andrew
>>
>> P.S. This list is very quiet but I'm hoping someone is reading it from
>> time to time.
>>
>>
Re: Copying font and alignment from existing table row
Posted by Svante Schubert <sv...@gmail.com>.
Hi Andrew,
likely Simple API has not implemented that feature, but Simple API relies
on ODFDOM and that uses W3C DOM, so you might consider to clone/copy the
previous table row.
Best is to take a look into the ODF XML to check if there are any IDs you
might need to adjust.
Have a nice weekend,
Svante
PS: I am personally using ODFDOM only, for instance currently I am
extracting table data from an EU specification to generate source code from.
Am Mi., 7. Nov. 2018 um 22:37 Uhr schrieb Andrew Willerding <
awillerding@itsurcom.com>:
> Hi,
>
> I have an existing table that I am appending rows to and I want the new
> rows to have the same font, alignment, etc as the rows previous to the
> additions but I'm finding that the new rows appear in the default
> document font style.
>
> He's a snippet of code I've used to try to manipulate the cell fonts.
>
> Cell cellItem =
> newRow.getCellByIndex(cellIndex++);
> cellItem.setStringValue(cell);
> if (firstRow != null) {
> System.out.println("Cell=" +
> firstRow.getCellByIndex(cellIndex - 1).getStringValue());
> // System.out.println("Cell=" +
> firstRow.getCellByIndex(cellIndex -
> 1).getHorizontalAlignmentType().getAlignmentString());
> System.out.println("Cell=" +
> firstRow.getCellByIndex(cellIndex - 1).getCellStyleName());
> System.out.println("Cell=" +
> firstRow.getCellByIndex(cellIndex - 1).getStyleHandler());
> //
> cellItem.setHorizontalAlignment(firstRow.getCellByIndex(cellIndex -
> 1).getHorizontalAlignmentType());
> //cellItem.setFont(firstRow.getCellByIndex(cellIndex -1).getFont());
> //cellItem.getFont().setSize(firstRow.getCellByIndex(cellIndex
> -1).getFont().getSize() - 2);
> cellItem.getStyleHandler().setFont(firstRow.getCellByIndex(cellIndex -
> 1).getStyleHandler().getFont(Document.ScriptType.WESTERN));
> //
> cellItem.setCellStyleName(firstRow.getCellByIndex(cellIndex -
> 1).getCellStyleName());
> }
>
> Except for the actual value of the cell, what prints out with the
> System.out statements is not the actual font, font size, etc of the cell.
>
> Is this a bug or am I not accessing and setting the values correctly?
> I've been referencing this web page for trying to get my code to work
>
>
> https://incubator.apache.org/odftoolkit/simple/document/cookbook/Style%20Handling.html#Advanced%20font%20handling
>
> Thanks,
>
> Andrew
>
> P.S. This list is very quiet but I'm hoping someone is reading it from
> time to time.
>
>