take into account indentation in HSSFSheet.autosizeColumn

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@653484 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yegor Kozlov 2008-05-05 13:59:11 +00:00
parent 3774c3228f
commit 72aceaf4dc
2 changed files with 8 additions and 6 deletions

View File

@ -43,7 +43,7 @@
<action dev="POI-DEVELOPERS" type="fix">44914 - Fix/suppress warning message "WARN. Unread n bytes of record 0xNN"</action>
<action dev="POI-DEVELOPERS" type="fix">44892 - made HSSFWorkbook.getSheet(String) case insensitive</action>
<action dev="POI-DEVELOPERS" type="fix">44886] - Correctly process PICT metafile in EscherMetafileBlip</action>
<action dev="POI-DEVELOPERS" type="fix">44893 - Correctly handle merged regions in HSSFSheet.autoSizeColumn</action>
<action dev="POI-DEVELOPERS" type="fix">44893 - Take into account indentation in HSSFSheet.autoSizeColumn</action>
</release>
<release version="3.1-beta1" date="2008-04-28">
<action dev="POI-DEVELOPERS" type="fix">44857 - Avoid OOM on unknown escher records when EscherMetafileBlip is incorrect</action>

View File

@ -1710,6 +1710,8 @@ public final class HSSFSheet {
HSSFCellStyle style = cell.getCellStyle();
HSSFFont font = wb.getFontAt(style.getFontIndex());
//the number of spaces to indent the text in the cell
int indention = style.getIndention();
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
HSSFRichTextString rt = cell.getRichStringCellValue();
@ -1742,9 +1744,9 @@ public final class HSSFSheet {
trans.concatenate(
AffineTransform.getScaleInstance(1, fontHeightMultiple)
);
width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth);
width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth + indention);
} else {
width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth);
width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth + indention);
}
}
} else {
@ -1787,15 +1789,15 @@ public final class HSSFSheet {
trans.concatenate(
AffineTransform.getScaleInstance(1, fontHeightMultiple)
);
width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth);
width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth + indention);
} else {
width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth);
width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth + indention);
}
}
}
if (width != -1) {
if (width > Short.MAX_VALUE) { //width can be bigger that Short.MAX_VALUE!
if (width > Short.MAX_VALUE) { //calculated width can be greater that Short.MAX_VALUE!
width = Short.MAX_VALUE;
}
sheet.setColumnWidth(column, (short) (width * 256));