You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@poi.apache.org by Matt Robinson <ma...@cellnet.com.au> on 2009/01/28 23:27:30 UTC
Tools for calculating coordinates for HSSFClientAnchors
Hello All,
Can someone please help me with a method or tool that allows me to convert
column width and row height settings into meaningful coordinate settings
for the HSSFClientAnchor class so I may insert an image into my
spreadsheet at full size? The documentation doesn't specify the units of
these coordinates, and they don't seem to correlate to pixels or any other
units denoted in the documentation.
For example:
The constructor call is:
HSSFClientAnchor imageAnchor = new HSSFClientAnchor( topLeftX, topLeftY,
bottomRightX, bottomRightY, startColumn, startRow, endColumn, endRow );
I have an image with width 308px and height 62px.
I would like to calculate the appropriate settings for bottomRightX, and
bottomRight based in these pixel sizes (and the origin values in topLeftX
and topLeftY).
After fiddling around with the values (and examining the errors thrown
when I exceeded the cell boundaries), I came up with:
550, 0, 1023, 255
This seemed to be the closest I could get to the image size, but it still
isn't full size. This suggests that 62px translates roughly to 255 and
308px translates to 473 (1023 - 550)?
I'm sure I've missed something fundamental.
Matt Robinson
---------------------------------------------------------------------------------------------------------------
Disclaimer:
The information in this electronic mail message is confidential and may be legally privileged.
It is intended solely for the addressee. Access to this Internet electronic mail message by anyone else is
unauthorised. If you are not the intended recipient, any disclosure, copying, distribution or any action taken
or omitted to be taken in reliance on it is prohibited and may be unlawful. If you have received this e-mail
by mistake please call the sender immediately on 07 3853 5555 and erase the original message and any attachments.
The Company accepts no responsibility for any effects this email message or attachments has on the recipient
network or computer system.
---------------------------------------------------------------------------------------------------------------
Re: Tools for calculating coordinates for HSSFClientAnchors
Posted by Matt Robinson <ma...@cellnet.com.au>.
Thank you Yegor. It certainly helped, but as my default font is Helvetica
Neue, it made the far too big.
I'll play around a little more.
Kind Regards,
Matt.
Yegor Kozlov <ye...@dinom.ru>
29/01/2009 05:37 PM
Please respond to
"POI Users List" <us...@poi.apache.org>
To
POI Users List <us...@poi.apache.org>
cc
Subject
Re: Tools for calculating coordinates for HSSFClientAnchors
You can use HSSFPicture.resize() to set the original size of an image. If
topLeftX, topLeftY are set,
HSSFPicture.resize() sets the new anchor relative to them.
See the source code
http://svn.apache.org/repos/asf/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
Excel uses the coordinate system based on column-row grid, not on pixels.
The conversion from column-row based
coordinates into pixels is indeed tricky. The main difficulty is that
Excel measures columns in units of 1/256th of a
character width. That is, to set the original width of an image you need
to calculate how many characters of the default
font will occupy the image width.
Current implementation of HSSFPicture.resize() is based on empirical
constants found for Arial 10pt, the default font in
most cases.
Yegor
> Hello All,
>
> Can someone please help me with a method or tool that allows me to
convert
> column width and row height settings into meaningful coordinate settings
> for the HSSFClientAnchor class so I may insert an image into my
> spreadsheet at full size? The documentation doesn't specify the units
of
> these coordinates, and they don't seem to correlate to pixels or any
other
> units denoted in the documentation.
>
> For example:
>
> The constructor call is:
> HSSFClientAnchor imageAnchor = new HSSFClientAnchor( topLeftX, topLeftY,
> bottomRightX, bottomRightY, startColumn, startRow, endColumn, endRow );
>
> I have an image with width 308px and height 62px.
>
> I would like to calculate the appropriate settings for bottomRightX, and
> bottomRight based in these pixel sizes (and the origin values in
topLeftX
> and topLeftY).
>
> After fiddling around with the values (and examining the errors thrown
> when I exceeded the cell boundaries), I came up with:
> 550, 0, 1023, 255
>
> This seemed to be the closest I could get to the image size, but it
still
> isn't full size. This suggests that 62px translates roughly to 255 and
> 308px translates to 473 (1023 - 550)?
>
> I'm sure I've missed something fundamental.
>
> Matt Robinson
>
---------------------------------------------------------------------------------------------------------------
> Disclaimer:
> The information in this electronic mail message is confidential and may
be legally privileged.
> It is intended solely for the addressee. Access to this Internet
electronic mail message by anyone else is
> unauthorised. If you are not the intended recipient, any disclosure,
copying, distribution or any action taken
> or omitted to be taken in reliance on it is prohibited and may be
unlawful. If you have received this e-mail
> by mistake please call the sender immediately on 07 3853 5555 and erase
the original message and any attachments.
> The Company accepts no responsibility for any effects this email message
or attachments has on the recipient
> network or computer system.
>
---------------------------------------------------------------------------------------------------------------
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@poi.apache.org
For additional commands, e-mail: user-help@poi.apache.org
---------------------------------------------------------------------------------------------------------------
Disclaimer:
The information in this electronic mail message is confidential and may be legally privileged.
It is intended solely for the addressee. Access to this Internet electronic mail message by anyone else is
unauthorised. If you are not the intended recipient, any disclosure, copying, distribution or any action taken
or omitted to be taken in reliance on it is prohibited and may be unlawful. If you have received this e-mail
by mistake please call the sender immediately on 07 3853 5555 and erase the original message and any attachments.
The Company accepts no responsibility for any effects this email message or attachments has on the recipient
network or computer system.
---------------------------------------------------------------------------------------------------------------
Re: Tools for calculating coordinates for HSSFClientAnchors
Posted by Yegor Kozlov <ye...@dinom.ru>.
You can use HSSFPicture.resize() to set the original size of an image. If topLeftX, topLeftY are set,
HSSFPicture.resize() sets the new anchor relative to them.
See the source code
http://svn.apache.org/repos/asf/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
Excel uses the coordinate system based on column-row grid, not on pixels. The conversion from column-row based
coordinates into pixels is indeed tricky. The main difficulty is that Excel measures columns in units of 1/256th of a
character width. That is, to set the original width of an image you need to calculate how many characters of the default
font will occupy the image width.
Current implementation of HSSFPicture.resize() is based on empirical constants found for Arial 10pt, the default font in
most cases.
Yegor
> Hello All,
>
> Can someone please help me with a method or tool that allows me to convert
> column width and row height settings into meaningful coordinate settings
> for the HSSFClientAnchor class so I may insert an image into my
> spreadsheet at full size? The documentation doesn't specify the units of
> these coordinates, and they don't seem to correlate to pixels or any other
> units denoted in the documentation.
>
> For example:
>
> The constructor call is:
> HSSFClientAnchor imageAnchor = new HSSFClientAnchor( topLeftX, topLeftY,
> bottomRightX, bottomRightY, startColumn, startRow, endColumn, endRow );
>
> I have an image with width 308px and height 62px.
>
> I would like to calculate the appropriate settings for bottomRightX, and
> bottomRight based in these pixel sizes (and the origin values in topLeftX
> and topLeftY).
>
> After fiddling around with the values (and examining the errors thrown
> when I exceeded the cell boundaries), I came up with:
> 550, 0, 1023, 255
>
> This seemed to be the closest I could get to the image size, but it still
> isn't full size. This suggests that 62px translates roughly to 255 and
> 308px translates to 473 (1023 - 550)?
>
> I'm sure I've missed something fundamental.
>
> Matt Robinson
> ---------------------------------------------------------------------------------------------------------------
> Disclaimer:
> The information in this electronic mail message is confidential and may be legally privileged.
> It is intended solely for the addressee. Access to this Internet electronic mail message by anyone else is
> unauthorised. If you are not the intended recipient, any disclosure, copying, distribution or any action taken
> or omitted to be taken in reliance on it is prohibited and may be unlawful. If you have received this e-mail
> by mistake please call the sender immediately on 07 3853 5555 and erase the original message and any attachments.
> The Company accepts no responsibility for any effects this email message or attachments has on the recipient
> network or computer system.
> ---------------------------------------------------------------------------------------------------------------
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@poi.apache.org
For additional commands, e-mail: user-help@poi.apache.org