Finding the width of a column in a table in OpenOffice.org writer is a bit of a black art, because the widths aren't stored anywhere, just the relative widths in arbitrary units. And if cells have been combined, then the object model has no concept of "columns" and there is no way to find the widths of cells. But, based on the table tutorial, I've written this function:
function colwidth (table, index) ' index is 0-based
' need the table to be oriented (http://api.openoffice.org/servlets/ReadMsg?list=dev&msgNo=12552)
table.horiOrient = com.sun.star.text.HoriOrientation.LEFT_AND_WIDTH
' tricks from http://wiki.services.openoffice.org/wiki/API/Samples/Java/Writer/TextTable
dim n
n = table.columns.count
if index >= n then
colwidth = 0
elseif n = 1 then ' single column table
colwidth = table.width
else
dim ratio as double
ratio = table.width / table.tableColumnRelativeSum
dim pos
pos = table.tableColumnSeparators
if index = 0 then
colwidth = pos(0).position * ratio
elseif index = n-1 then ' last column
colwidth = (table.tableColumnRelativeSum - pos (ubound(pos)).position) * ratio
else
colwidth = (pos(index).position - pos(index-1).position) * ratio
end if
end if
end function
Leave a Reply