On Mar 10, 6:55 am, Terry Reedy <tjre...@udel.edu> wrote: > Krishnakant wrote: > > I need to merge cells in a spreadsheet and this library won't do that. > > I think you are confusing process and result. The result is a cell that > spans more than one column or row *when displayed*, thus hiding the > cells that would otherwise be displayed. This is, I am 99.9% sure, > controlled by an attribute of the visually expanded cell. > > In OOCalc, the process is to mark a block of cells and select Format / > Merge Cells. But still, the result will be a change in the upper left > attribute. Thus I suggested you make a .ods file with expanded cells > and then read the xml to see what cell element attribute is set thereby. > Any decent odf library will be able to set element attributes.
It doesn't appear to be quite so simple. ODS uses a <table:table-cell> element as usual for the upper left cell. Attributes set the range e.g. table:number-columns-spanned="3" table:number-rows-spanned="2" The gotcha is that it uses a *different* element for the cells covered by the range. Example: <table:covered-table-cell table:number-columns-repeated="2" /> This is looks like structural amendments are needed to a package like (python-)?ooolib(-python)? that doesn't grok merged cells -- its source doesn't contain the string "covered". Doesn't seem like it could be done just by poking in attributes. Here's an example of 2 merged ranges: A1:C2 contains the text "foo" and D1:D2 contains "bar" <table:table-row table:style-name="ro1"> - <table:table-cell table:style-name="ce1" office:value-type="string" table:number-columns-spanned="3" table:number-rows-spanned="2"> <text:p>foo</text:p> </table:table-cell> <table:covered-table-cell table:number-columns-repeated="2" /> - <table:table-cell table:style-name="ce1" office:value-type="string" table:number-columns-spanned="1" table:number-rows-spanned="2"> <text:p>bar</text:p> </table:table-cell> </table:table-row> - <table:table-row table:style-name="ro1"> <table:covered-table-cell table:number-columns-repeated="4" /> </table:table-row> Aside: If you are wondering where the cell addresses (D1 etc) are, they're in the reader's current_row and current_col variables :-) Perhaps this was intended to save space, but what of table:number- columns-repeated="4" ?? Cheers, John -- http://mail.python.org/mailman/listinfo/python-list