git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@696475 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_5_BETA3
@@ -1,4 +1,3 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
@@ -15,8 +14,6 @@ | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.hssf.contrib.view; | |||
@@ -47,10 +44,10 @@ public class SViewerPanel extends JPanel { | |||
* | |||
*/ | |||
private static final int magicCharFactor = 7; | |||
/** Reference to the woorkbook that is being displayed*/ | |||
private HSSFWorkbook wb; | |||
/** Reference to the wookbook that is being displayed*/ | |||
/* package */ HSSFWorkbook wb; | |||
/** Reference to the tabs component*/ | |||
private JTabbedPane sheetPane; | |||
/* package */ JTabbedPane sheetPane; | |||
/** Reference to the cell renderer that is used to render all cells*/ | |||
private SVTableCellRenderer cellRenderer; | |||
/** Reference to the cell editor that is used to edit all cells. | |||
@@ -106,7 +103,7 @@ public class SViewerPanel extends JPanel { | |||
TableColumnModel columns = sheetView.getColumnModel(); | |||
for (int i=0; i< columns.getColumnCount(); i++) { | |||
TableColumn column = columns.getColumn(i); | |||
short width = sheet.getColumnWidth((short)i); | |||
int width = sheet.getColumnWidth(i); | |||
//256 is because the width is in 256ths of a character | |||
column.setPreferredWidth(width/256*magicCharFactor); | |||
} | |||
@@ -208,7 +205,7 @@ public class SViewerPanel extends JPanel { | |||
public void actionPerformed(ActionEvent e) { | |||
int tabIndex = sheetPane.getSelectedIndex(); | |||
if (tabIndex != -1) { | |||
String newSheetName = (String)JOptionPane.showInputDialog(sheetPane, "Enter a new Sheetname", "Rename Sheet", JOptionPane.QUESTION_MESSAGE); | |||
String newSheetName = JOptionPane.showInputDialog(sheetPane, "Enter a new Sheetname", "Rename Sheet", JOptionPane.QUESTION_MESSAGE); | |||
if (newSheetName != null) { | |||
wb.setSheetName(tabIndex, newSheetName); | |||
sheetPane.setTitleAt(tabIndex, newSheetName); |
@@ -67,6 +67,7 @@ | |||
<action dev="POI-DEVELOPERS" type="add">Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx</action> | |||
</release> | |||
<release version="3.2-alpha1" date="2008-??-??"> | |||
<action dev="POI-DEVELOPERS" type="fix">45805 - Fixed 16-bit signed/unsigned bug in HSSFSheet.getColWidth etc</action> | |||
<action dev="POI-DEVELOPERS" type="fix">45780 - Fixed HSSFSheet.shiftRows to also update Area refs</action> | |||
<action dev="POI-DEVELOPERS" type="fix">45804 - Update HSMF to handle Outlook 3.0 msg files, which have a different string chunk type</action> | |||
<action dev="POI-DEVELOPERS" type="add">Expose the name of Named Cell Styles via HSSFCellStyle (normally held on the parent style though)</action> |
@@ -64,6 +64,7 @@ | |||
<action dev="POI-DEVELOPERS" type="add">Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx</action> | |||
</release> | |||
<release version="3.2-alpha1" date="2008-??-??"> | |||
<action dev="POI-DEVELOPERS" type="fix">45805 - Fixed 16-bit signed/unsigned bug in HSSFSheet.getColWidth etc</action> | |||
<action dev="POI-DEVELOPERS" type="fix">45780 - Fixed HSSFSheet.shiftRows to also update Area refs</action> | |||
<action dev="POI-DEVELOPERS" type="fix">45804 - Update HSMF to handle Outlook 3.0 msg files, which have a different string chunk type</action> | |||
<action dev="POI-DEVELOPERS" type="add">Expose the name of Named Cell Styles via HSSFCellStyle (normally held on the parent style though)</action> |
@@ -135,8 +135,7 @@ public class HSSF | |||
c = r.createCell(cellnum + 1, | |||
HSSFCell.CELL_TYPE_STRING); | |||
c.setCellValue(new HSSFRichTextString("TEST")); | |||
s.setColumnWidth(( short ) (cellnum + 1), | |||
( short ) ((50 * 8) / (( double ) 1 / 20))); | |||
s.setColumnWidth(cellnum + 1, (int)(50 * 8 / 0.05)); | |||
if ((rownum % 2) == 0) | |||
{ | |||
c.setCellStyle(cs2); |
@@ -973,9 +973,7 @@ public final class Sheet implements Model { | |||
* get the default column width for the sheet (if the columns do not define their own width) | |||
* @return default column width | |||
*/ | |||
public short getDefaultColumnWidth() | |||
{ | |||
public int getDefaultColumnWidth() { | |||
return defaultcolwidth.getColWidth(); | |||
} | |||
@@ -1009,9 +1007,7 @@ public final class Sheet implements Model { | |||
* set the default column width for the sheet (if the columns do not define their own width) | |||
* @param dcw default column width | |||
*/ | |||
public void setDefaultColumnWidth(short dcw) | |||
{ | |||
public void setDefaultColumnWidth(int dcw) { | |||
defaultcolwidth.setColWidth(dcw); | |||
} | |||
@@ -1043,15 +1039,15 @@ public final class Sheet implements Model { | |||
* @return column width in units of 1/256th of a character width | |||
*/ | |||
public short getColumnWidth(short columnIndex) { | |||
public int getColumnWidth(int columnIndex) { | |||
ColumnInfoRecord ci = _columnInfos.findColumnInfo(columnIndex); | |||
if (ci != null) { | |||
return (short)ci.getColumnWidth(); | |||
return ci.getColumnWidth(); | |||
} | |||
//default column width is measured in characters | |||
//multiply | |||
return (short)(256*defaultcolwidth.getColWidth()); | |||
return (256*defaultcolwidth.getColWidth()); | |||
} | |||
/** | |||
@@ -1084,8 +1080,8 @@ public final class Sheet implements Model { | |||
* @param width | |||
* (in units of 1/256th of a character width) | |||
*/ | |||
public void setColumnWidth(short column, short width) { | |||
setColumn( column, new Short(width), null, null, null); | |||
public void setColumnWidth(int column, int width) { | |||
setColumn(column, null, new Integer(width), null, null, null); | |||
} | |||
/** | |||
@@ -1096,7 +1092,7 @@ public final class Sheet implements Model { | |||
* @see #setColumnHidden(short,boolean) | |||
* @return whether the column is hidden or not. | |||
*/ | |||
public boolean isColumnHidden(short columnIndex) { | |||
public boolean isColumnHidden(int columnIndex) { | |||
ColumnInfoRecord cir = _columnInfos.findColumnInfo(columnIndex); | |||
if (cir == null) { | |||
return false; | |||
@@ -1109,16 +1105,14 @@ public final class Sheet implements Model { | |||
* @param column - the column number | |||
* @param hidden - whether the column is hidden or not | |||
*/ | |||
public void setColumnHidden(short column, boolean hidden) | |||
{ | |||
setColumn( column, null, null, new Boolean(hidden), null); | |||
public void setColumnHidden(int column, boolean hidden) { | |||
setColumn( column, null, null, null, Boolean.valueOf(hidden), null); | |||
} | |||
public void setColumn(short column, Short width, Integer level, Boolean hidden, Boolean collapsed) { | |||
_columnInfos.setColumn( column, null, width, level, hidden, collapsed ); | |||
public void setDefaultColumnStyle(int column, int styleIndex) { | |||
setColumn(column, new Short((short)styleIndex), null, null, null, null); | |||
} | |||
public void setColumn(short column, Short xfStyle, Short width, Integer level, Boolean hidden, Boolean collapsed) { | |||
private void setColumn(int column, Short xfStyle, Integer width, Integer level, Boolean hidden, Boolean collapsed) { | |||
_columnInfos.setColumn( column, xfStyle, width, level, hidden, collapsed ); | |||
} | |||
@@ -40,7 +40,7 @@ public final class ColumnInfoRecord extends Record { | |||
private static final BitField outlevel = BitFieldFactory.getInstance(0x0700); | |||
private static final BitField collapsed = BitFieldFactory.getInstance(0x1000); | |||
// Excel seems write values 2, 10, and 260, even though spec says "must be zero" | |||
private short field_6_reserved; | |||
private int field_6_reserved; | |||
/** | |||
* Creates a column info record with default width and format | |||
@@ -64,14 +64,14 @@ public final class ColumnInfoRecord extends Record { | |||
protected void fillFields(RecordInputStream in) | |||
{ | |||
field_1_first_col = in.readShort(); | |||
field_2_last_col = in.readShort(); | |||
field_3_col_width = in.readShort(); | |||
field_4_xf_index = in.readShort(); | |||
field_5_options = in.readShort(); | |||
field_1_first_col = in.readUShort(); | |||
field_2_last_col = in.readUShort(); | |||
field_3_col_width = in.readUShort(); | |||
field_4_xf_index = in.readUShort(); | |||
field_5_options = in.readUShort(); | |||
switch(in.remaining()) { | |||
case 2: // usual case | |||
field_6_reserved = in.readShort(); | |||
field_6_reserved = in.readUShort(); | |||
break; | |||
case 1: | |||
// often COLINFO gets encoded 1 byte short |
@@ -1,4 +1,3 @@ | |||
/* ==================================================================== | |||
Licensed to the Apache Software Foundation (ASF) under one or more | |||
contributor license agreements. See the NOTICE file distributed with | |||
@@ -15,14 +14,13 @@ | |||
See the License for the specific language governing permissions and | |||
limitations under the License. | |||
==================================================================== */ | |||
package org.apache.poi.hssf.record; | |||
import org.apache.poi.util.LittleEndian; | |||
/** | |||
* Title: Default Column Width Record<P> | |||
* Title: Default Column Width Record (0x0055) <P> | |||
* Description: Specifies the default width for columns that have no specific | |||
* width set.<P> | |||
* REFERENCE: PG 302 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P> | |||
@@ -30,12 +28,9 @@ import org.apache.poi.util.LittleEndian; | |||
* @author Jason Height (jheight at chariot dot net dot au) | |||
* @version 2.0-pre | |||
*/ | |||
public class DefaultColWidthRecord | |||
extends Record | |||
{ | |||
public final static short sid = 0x55; | |||
private short field_1_col_width; | |||
public final class DefaultColWidthRecord extends Record { | |||
public final static short sid = 0x0055; | |||
private int field_1_col_width; | |||
public DefaultColWidthRecord() | |||
{ | |||
@@ -61,17 +56,17 @@ public class DefaultColWidthRecord | |||
protected void fillFields(RecordInputStream in) | |||
{ | |||
field_1_col_width = in.readShort(); | |||
field_1_col_width = in.readUShort(); | |||
} | |||
/** | |||
* set the default column width | |||
* @param height defaultwidth for columns | |||
* @param width defaultwidth for columns | |||
*/ | |||
public void setColWidth(short height) | |||
public void setColWidth(int width) | |||
{ | |||
field_1_col_width = height; | |||
field_1_col_width = width; | |||
} | |||
/** | |||
@@ -79,7 +74,7 @@ public class DefaultColWidthRecord | |||
* @return defaultwidth for columns | |||
*/ | |||
public short getColWidth() | |||
public int getColWidth() | |||
{ | |||
return field_1_col_width; | |||
} | |||
@@ -97,9 +92,9 @@ public class DefaultColWidthRecord | |||
public int serialize(int offset, byte [] data) | |||
{ | |||
LittleEndian.putShort(data, 0 + offset, sid); | |||
LittleEndian.putShort(data, 2 + offset, ( short ) 0x2); | |||
LittleEndian.putShort(data, 4 + offset, getColWidth()); | |||
LittleEndian.putUShort(data, 0 + offset, sid); | |||
LittleEndian.putUShort(data, 2 + offset, 0x2); | |||
LittleEndian.putUShort(data, 4 + offset, getColWidth()); | |||
return getRecordSize(); | |||
} | |||
@@ -299,7 +299,7 @@ public final class ColumnInfoRecordsAggregate extends RecordAggregate { | |||
} | |||
public void setColumn(int targetColumnIx, Short xfIndex, Short width, | |||
public void setColumn(int targetColumnIx, Short xfIndex, Integer width, | |||
Integer level, Boolean hidden, Boolean collapsed) { | |||
ColumnInfoRecord ci = null; | |||
int k = 0; | |||
@@ -389,13 +389,13 @@ public final class ColumnInfoRecordsAggregate extends RecordAggregate { | |||
/** | |||
* Sets all non null fields into the <code>ci</code> parameter. | |||
*/ | |||
private static void setColumnInfoFields( ColumnInfoRecord ci, Short xfStyle, Short width, | |||
Integer level, Boolean hidden, Boolean collapsed ) { | |||
private static void setColumnInfoFields(ColumnInfoRecord ci, Short xfStyle, Integer width, | |||
Integer level, Boolean hidden, Boolean collapsed) { | |||
if (xfStyle != null) { | |||
ci.setXFIndex(xfStyle.shortValue()); | |||
} | |||
if (width != null) { | |||
ci.setColumnWidth(width.shortValue()); | |||
ci.setColumnWidth(width.intValue()); | |||
} | |||
if (level != null) { | |||
ci.setOutlineLevel( level.shortValue() ); |
@@ -160,9 +160,9 @@ public class HSSFPicture | |||
return anchor; | |||
} | |||
private float getColumnWidthInPixels(short column){ | |||
private float getColumnWidthInPixels(int column){ | |||
short cw = patriarch.sheet.getColumnWidth(column); | |||
int cw = patriarch.sheet.getColumnWidth(column); | |||
float px = getPixelWidth(column); | |||
return cw/px; | |||
@@ -178,10 +178,10 @@ public class HSSFPicture | |||
return height/PX_ROW; | |||
} | |||
private float getPixelWidth(short column){ | |||
private float getPixelWidth(int column){ | |||
int def = patriarch.sheet.getDefaultColumnWidth()*256; | |||
short cw = patriarch.sheet.getColumnWidth(column); | |||
int cw = patriarch.sheet.getColumnWidth(column); | |||
return cw == def ? PX_DEFAULT : PX_MODIFIED; | |||
} |
@@ -395,48 +395,75 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet | |||
} | |||
/** | |||
* @deprecated (Sep 2008) use {@link #setColumnHidden(int, boolean)} | |||
*/ | |||
public void setColumnHidden(short columnIndex, boolean hidden) { | |||
setColumnHidden(columnIndex & 0xFFFF, hidden); | |||
} | |||
/** | |||
* @deprecated (Sep 2008) use {@link #isColumnHidden(int)} | |||
*/ | |||
public boolean isColumnHidden(short columnIndex) { | |||
return isColumnHidden(columnIndex & 0xFFFF); | |||
} | |||
/** | |||
* @deprecated (Sep 2008) use {@link #setColumnWidth(int, int)} | |||
*/ | |||
public void setColumnWidth(short columnIndex, short width) { | |||
setColumnWidth(columnIndex & 0xFFFF, width & 0xFFFF); | |||
} | |||
/** | |||
* @deprecated (Sep 2008) use {@link #getColumnWidth(int)} | |||
*/ | |||
public short getColumnWidth(short columnIndex) { | |||
return (short)getColumnWidth(columnIndex & 0xFFFF); | |||
} | |||
/** | |||
* @deprecated (Sep 2008) use {@link #setDefaultColumnWidth(int)} | |||
*/ | |||
public void setDefaultColumnWidth(short width) { | |||
setDefaultColumnWidth(width & 0xFFFF); | |||
} | |||
/** | |||
* Get the visibility state for a given column. | |||
* @param column - the column to get (0-based) | |||
* @param columnIndex - the column to get (0-based) | |||
* @param hidden - the visiblity state of the column | |||
*/ | |||
public void setColumnHidden(short column, boolean hidden) | |||
{ | |||
sheet.setColumnHidden(column, hidden); | |||
public void setColumnHidden(int columnIndex, boolean hidden) { | |||
sheet.setColumnHidden(columnIndex, hidden); | |||
} | |||
/** | |||
* Get the hidden state for a given column. | |||
* @param column - the column to set (0-based) | |||
* @return hidden - the visiblity state of the column | |||
* @param columnIndex - the column to set (0-based) | |||
* @return hidden - <code>false</code> if the column is visible | |||
*/ | |||
public boolean isColumnHidden(short column) | |||
{ | |||
return sheet.isColumnHidden(column); | |||
public boolean isColumnHidden(int columnIndex) { | |||
return sheet.isColumnHidden(columnIndex); | |||
} | |||
/** | |||
* set the width (in units of 1/256th of a character width) | |||
* @param column - the column to set (0-based) | |||
* @param columnIndex - the column to set (0-based) | |||
* @param width - the width in units of 1/256th of a character width | |||
*/ | |||
public void setColumnWidth(short column, short width) | |||
{ | |||
sheet.setColumnWidth(column, width); | |||
public void setColumnWidth(int columnIndex, int width) { | |||
sheet.setColumnWidth(columnIndex, width); | |||
} | |||
/** | |||
* get the width (in units of 1/256th of a character width ) | |||
* @param column - the column to set (0-based) | |||
* @param columnIndex - the column to set (0-based) | |||
* @return width - the width in units of 1/256th of a character width | |||
*/ | |||
public short getColumnWidth(short column) | |||
{ | |||
return sheet.getColumnWidth(column); | |||
public int getColumnWidth(int columnIndex) { | |||
return sheet.getColumnWidth(columnIndex); | |||
} | |||
/** | |||
@@ -444,20 +471,25 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet | |||
* characters | |||
* @return default column width | |||
*/ | |||
public short getDefaultColumnWidth() | |||
{ | |||
public int getDefaultColumnWidth() { | |||
return sheet.getDefaultColumnWidth(); | |||
} | |||
/** | |||
* set the default column width for the sheet (if the columns do not define their own width) in | |||
* characters | |||
* @param width default column width | |||
*/ | |||
public void setDefaultColumnWidth(int width) { | |||
sheet.setDefaultColumnWidth(width); | |||
} | |||
/** | |||
* get the default row height for the sheet (if the rows do not define their own height) in | |||
* twips (1/20 of a point) | |||
* @return default row height | |||
*/ | |||
public short getDefaultRowHeight() | |||
{ | |||
public short getDefaultRowHeight() { | |||
return sheet.getDefaultRowHeight(); | |||
} | |||
@@ -472,17 +504,6 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet | |||
return (sheet.getDefaultRowHeight() / 20); | |||
} | |||
/** | |||
* set the default column width for the sheet (if the columns do not define their own width) in | |||
* characters | |||
* @param width default column width | |||
*/ | |||
public void setDefaultColumnWidth(short width) | |||
{ | |||
sheet.setDefaultColumnWidth(width); | |||
} | |||
/** | |||
* set the default row height for the sheet (if the rows do not define their own height) in | |||
* twips (1/20 of a point) | |||
@@ -1005,19 +1026,19 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet | |||
/** | |||
* Sets the protection on enabled or disabled | |||
* @param protect true => protection enabled; false => protection disabled | |||
* @deprecated use protectSheet(String, boolean, boolean) | |||
* @deprecated (Jul 2007) use {@link #protectSheet(String)} | |||
*/ | |||
public void setProtect(boolean protect) { | |||
getSheet().getProtect().setProtect(protect); | |||
} | |||
/** | |||
* Sets the protection enabled as well as the password | |||
* @param password to set for protection | |||
*/ | |||
public void protectSheet(String password) { | |||
getSheet().protectSheet(password, true, true); //protect objs&scenarios(normal) | |||
} | |||
/** | |||
* Sets the protection enabled as well as the password | |||
* @param password to set for protection | |||
*/ | |||
public void protectSheet(String password) { | |||
getSheet().protectSheet(password, true, true); //protect objs&scenarios(normal) | |||
} | |||
/** | |||
* Sets the zoom magnication for the sheet. The zoom is expressed as a | |||
@@ -1630,7 +1651,7 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet | |||
* @param style the style to set | |||
*/ | |||
public void setDefaultColumnStyle(short column, CellStyle style) { | |||
sheet.setColumn(column, new Short(((HSSFCellStyle) style).getIndex()), null, null, null, null); | |||
sheet.setDefaultColumnStyle(column, style.getIndex()); | |||
} | |||
/** |
@@ -19,7 +19,9 @@ package org.apache.poi.ss.usermodel; | |||
import java.util.Iterator; | |||
import org.apache.poi.hssf.usermodel.HSSFRow; | |||
import org.apache.poi.hssf.util.PaneInformation; | |||
import org.apache.poi.ss.util.CellRangeAddress; | |||
import org.apache.poi.ss.util.Region; | |||
public interface Sheet extends Iterable<Row> { | |||
@@ -96,37 +98,65 @@ public interface Sheet extends Iterable<Row> { | |||
int getLastRowNum(); | |||
/** | |||
* @deprecated (Sep 2008) use {@link #setColumnHidden(int, boolean)} | |||
*/ | |||
void setColumnHidden(short columnIndex, boolean hidden); | |||
/** | |||
* @deprecated (Sep 2008) use {@link #isColumnHidden(int)} | |||
*/ | |||
boolean isColumnHidden(short columnIndex); | |||
/** | |||
* @deprecated (Sep 2008) use {@link #setColumnWidth(int, int)} | |||
*/ | |||
void setColumnWidth(short columnIndex, short width); | |||
/** | |||
* @deprecated (Sep 2008) use {@link #getColumnWidth(int)} | |||
*/ | |||
short getColumnWidth(short columnIndex); | |||
/** | |||
* @deprecated (Sep 2008) use {@link #setDefaultColumnWidth(int)} | |||
*/ | |||
void setDefaultColumnWidth(short width); | |||
/** | |||
* Get the visibility state for a given column. | |||
* @param column - the column to get (0-based) | |||
* @param columnIndex - the column to get (0-based) | |||
* @param hidden - the visiblity state of the column | |||
*/ | |||
void setColumnHidden(short column, boolean hidden); | |||
void setColumnHidden(int columnIndex, boolean hidden); | |||
/** | |||
* Get the hidden state for a given column. | |||
* @param column - the column to set (0-based) | |||
* @return hidden - the visiblity state of the column | |||
* @param columnIndex - the column to set (0-based) | |||
* @return hidden - <code>false</code> if the column is visible | |||
*/ | |||
boolean isColumnHidden(short column); | |||
boolean isColumnHidden(int columnIndex); | |||
/** | |||
* set the width (in units of 1/256th of a character width) | |||
* @param column - the column to set (0-based) | |||
* @param columnIndex - the column to set (0-based) | |||
* @param width - the width in units of 1/256th of a character width | |||
*/ | |||
void setColumnWidth(short column, short width); | |||
void setColumnWidth(int columnIndex, int width); | |||
/** | |||
* get the width (in units of 1/256th of a character width ) | |||
* @param column - the column to set (0-based) | |||
* @param columnIndex - the column to set (0-based) | |||
* @return width - the width in units of 1/256th of a character width | |||
*/ | |||
short getColumnWidth(short column); | |||
int getColumnWidth(int columnIndex); | |||
/** | |||
* set the default column width for the sheet (if the columns do not define their own width) in | |||
* characters | |||
* @param width default column width | |||
*/ | |||
public void setDefaultColumnWidth(int width); | |||
/** | |||
* get the default column width for the sheet (if the columns do not define their own width) in | |||
@@ -134,7 +164,7 @@ public interface Sheet extends Iterable<Row> { | |||
* @return default column width | |||
*/ | |||
short getDefaultColumnWidth(); | |||
int getDefaultColumnWidth(); | |||
/** | |||
* get the default row height for the sheet (if the rows do not define their own height) in | |||
@@ -152,14 +182,6 @@ public interface Sheet extends Iterable<Row> { | |||
float getDefaultRowHeightInPoints(); | |||
/** | |||
* set the default column width for the sheet (if the columns do not define their own width) in | |||
* characters | |||
* @param width default column width | |||
*/ | |||
void setDefaultColumnWidth(short width); | |||
/** | |||
* set the default row height for the sheet (if the rows do not define their own height) in | |||
* twips (1/20 of a point) | |||
@@ -190,12 +212,17 @@ public interface Sheet extends Iterable<Row> { | |||
void setGridsPrinted(boolean value); | |||
/** | |||
* adds a merged region of cells (hence those cells form one) | |||
* @param region (rowfrom/colfrom-rowto/colto) to merge | |||
* @return index of this region | |||
*/ | |||
int addMergedRegion(CellRangeAddress region); | |||
/** | |||
* @deprecated (Aug-2008) use {@link #addMergedRegion(CellRangeAddress)} | |||
*/ | |||
int addMergedRegion(Region region); | |||
/** |
@@ -35,6 +35,7 @@ import org.apache.poi.ss.usermodel.Patriarch; | |||
import org.apache.poi.ss.usermodel.PrintSetup; | |||
import org.apache.poi.ss.usermodel.Row; | |||
import org.apache.poi.ss.usermodel.Sheet; | |||
import org.apache.poi.ss.util.CellRangeAddress; | |||
import org.apache.poi.ss.util.CellReference; | |||
import org.apache.poi.ss.util.Region; | |||
import org.apache.poi.xssf.model.CommentsTable; | |||
@@ -224,6 +225,12 @@ public class XSSFSheet implements Sheet { | |||
protected CTSheet getSheet() { | |||
return this.sheet; | |||
} | |||
public int addMergedRegion(CellRangeAddress cra) { | |||
Region r = new Region(cra.getFirstRow(), (short)cra.getFirstColumn(), | |||
cra.getLastRow(), (short)cra.getLastColumn()); | |||
return addMergedRegion(r); | |||
} | |||
public int addMergedRegion(Region region) { | |||
addNewMergeCell(region); | |||
@@ -345,12 +352,15 @@ public class XSSFSheet implements Sheet { | |||
return worksheet.getColBreaks(); | |||
} | |||
public int getColumnWidth(int columnIndex) { | |||
return (int) columnHelper.getColumn(columnIndex, false).getWidth(); | |||
} | |||
public short getColumnWidth(short column) { | |||
return (short) columnHelper.getColumn(column, false).getWidth(); | |||
return (short) getColumnWidth(column & 0xFFFF); | |||
} | |||
public short getDefaultColumnWidth() { | |||
return (short) getSheetTypeSheetFormatPr().getDefaultColWidth(); | |||
public int getDefaultColumnWidth() { | |||
return (int)getSheetTypeSheetFormatPr().getDefaultColWidth(); | |||
} | |||
public short getDefaultRowHeight() { | |||
@@ -714,8 +724,11 @@ public class XSSFSheet implements Sheet { | |||
return false; | |||
} | |||
public boolean isColumnHidden(int columnIndex) { | |||
return columnHelper.getColumn(columnIndex, false).getHidden(); | |||
} | |||
public boolean isColumnHidden(short column) { | |||
return columnHelper.getColumn(column, false).getHidden(); | |||
return isColumnHidden(column & 0xFFFF); | |||
} | |||
public boolean isDisplayFormulas() { | |||
@@ -839,20 +852,29 @@ public class XSSFSheet implements Sheet { | |||
} | |||
public void setColumnHidden(int columnIndex, boolean hidden) { | |||
columnHelper.setColHidden(columnIndex, hidden); | |||
} | |||
public void setColumnHidden(short column, boolean hidden) { | |||
columnHelper.setColHidden(column, hidden); | |||
setColumnHidden(column & 0xFFFF, hidden); | |||
} | |||
public void setColumnWidth(int columnIndex, int width) { | |||
columnHelper.setColWidth(columnIndex, width); | |||
} | |||
public void setColumnWidth(short column, short width) { | |||
columnHelper.setColWidth(column, width); | |||
setColumnWidth(column & 0xFFFF, width & 0xFFFF); | |||
} | |||
public void setDefaultColumnStyle(short column, CellStyle style) { | |||
columnHelper.setColDefaultStyle(column, style); | |||
} | |||
public void setDefaultColumnWidth(int width) { | |||
getSheetTypeSheetFormatPr().setDefaultColWidth(width); | |||
} | |||
public void setDefaultColumnWidth(short width) { | |||
getSheetTypeSheetFormatPr().setDefaultColWidth((double) width); | |||
setDefaultColumnWidth(width & 0xFFFF); | |||
} | |||
public void setDefaultRowHeight(short height) { |
@@ -204,24 +204,23 @@ public final class TestBugs extends TestCase { | |||
col_cnt = c; | |||
rw_cnt = r; | |||
HSSFRow rw = null ; | |||
HSSFCell cell =null; | |||
HSSFRow rw ; | |||
rw = sheet.createRow(0) ; | |||
//Header row | |||
for(int j=0; j<col_cnt; j++){ | |||
cell = rw.createCell(j) ; | |||
HSSFCell cell = rw.createCell(j) ; | |||
setCellText(cell, "Col " + (j+1)) ; | |||
} | |||
for(int i=1; i<rw_cnt; i++){ | |||
rw = sheet.createRow(i) ; | |||
for(int j=0; j<col_cnt; j++){ | |||
cell = rw.createCell(j) ; | |||
HSSFCell cell = rw.createCell(j) ; | |||
setCellText(cell, "Row:" + (i+1) + ",Column:" + (j+1)) ; | |||
} | |||
} | |||
sheet.setDefaultColumnWidth((short) 18) ; | |||
sheet.setDefaultColumnWidth(18) ; | |||
writeTestOutputFileForViewing(wb, "test22568"); | |||
} |
@@ -269,11 +269,11 @@ public final class TestDataValidation extends TestCase { | |||
for (int i = 0; i < 6; i++) { | |||
row.createCell(i).setCellStyle(_style_4); | |||
if (i == 2 || i == 3 || i == 4) { | |||
sheet.setColumnWidth((short) i, (short) 3500); | |||
sheet.setColumnWidth(i, 3500); | |||
} else if (i == 5) { | |||
sheet.setColumnWidth((short) i, (short) 10000); | |||
sheet.setColumnWidth(i, 10000); | |||
} else { | |||
sheet.setColumnWidth((short) i, (short) 8000); | |||
sheet.setColumnWidth(i, 8000); | |||
} | |||
} | |||
HSSFCell cell = row.getCell(0); |
@@ -435,7 +435,7 @@ public final class TestHSSFSheet extends TestCase { | |||
// This will tell us that cloneSheet, and by extension, | |||
// the list forms of createSheet leave us with an accessible | |||
// ProtectRecord. | |||
hssfSheet.setProtect(true); | |||
hssfSheet.protectSheet("secret"); | |||
Sheet cloned = sheet.cloneSheet(); | |||
assertNotNull(cloned.getProtect()); | |||
assertTrue(hssfSheet.getProtect()); | |||
@@ -682,8 +682,8 @@ public final class TestHSSFSheet extends TestCase { | |||
// autoSize the first column and check its size before the merged region (1,0,1,1) is set: | |||
// it has to be based on the 2nd row width | |||
sheet.autoSizeColumn((short)0); | |||
assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth((short)0) >= minWithRow1And2); | |||
assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth((short)0) <= maxWithRow1And2); | |||
assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth(0) >= minWithRow1And2); | |||
assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth(0) <= maxWithRow1And2); | |||
//create a region over the 2nd row and auto size the first column | |||
sheet.addMergedRegion(new CellRangeAddress(1,1,0,1)); | |||
@@ -693,16 +693,16 @@ public final class TestHSSFSheet extends TestCase { | |||
// check that the autoSized column width has ignored the 2nd row | |||
// because it is included in a merged region (Excel like behavior) | |||
HSSFSheet sheet2 = wb2.getSheet(sheetName); | |||
assertTrue(sheet2.getColumnWidth((short)0) >= minWithRow1Only); | |||
assertTrue(sheet2.getColumnWidth((short)0) <= maxWithRow1Only); | |||
assertTrue(sheet2.getColumnWidth(0) >= minWithRow1Only); | |||
assertTrue(sheet2.getColumnWidth(0) <= maxWithRow1Only); | |||
// remove the 2nd row merged region and check that the 2nd row value is used to the autoSizeColumn width | |||
sheet2.removeMergedRegion(1); | |||
sheet2.autoSizeColumn((short)0); | |||
HSSFWorkbook wb3 = HSSFTestDataSamples.writeOutAndReadBack(wb2); | |||
HSSFSheet sheet3 = wb3.getSheet(sheetName); | |||
assertTrue(sheet3.getColumnWidth((short)0) >= minWithRow1And2); | |||
assertTrue(sheet3.getColumnWidth((short)0) <= maxWithRow1And2); | |||
assertTrue(sheet3.getColumnWidth(0) >= minWithRow1And2); | |||
assertTrue(sheet3.getColumnWidth(0) <= maxWithRow1And2); | |||
} | |||
/** | |||
@@ -786,7 +786,7 @@ public final class TestHSSFSheet extends TestCase { | |||
HSSFSheet sh = wb.getSheetAt(0); | |||
for (char i = 'A'; i <= 'S'; i++) { | |||
int idx = i - 'A'; | |||
int w = sh.getColumnWidth((short)idx); | |||
int w = sh.getColumnWidth(idx); | |||
assertEquals(ref[idx], w); | |||
} | |||
@@ -795,24 +795,24 @@ public final class TestHSSFSheet extends TestCase { | |||
int def_width = sh.getDefaultColumnWidth(); | |||
for (char i = 'A'; i <= 'S'; i++) { | |||
int idx = i - 'A'; | |||
int w = sh.getColumnWidth((short)idx); | |||
//getDefaultColumnWidth returns width measued in characters | |||
//getColumnWidth returns width measued in 1/256th units | |||
int w = sh.getColumnWidth(idx); | |||
//getDefaultColumnWidth returns width measured in characters | |||
//getColumnWidth returns width measured in 1/256th units | |||
assertEquals(def_width*256, w); | |||
} | |||
//test new workbook | |||
wb = new HSSFWorkbook(); | |||
sh = wb.createSheet(); | |||
sh.setDefaultColumnWidth((short)10); | |||
sh.setDefaultColumnWidth(10); | |||
assertEquals(10, sh.getDefaultColumnWidth()); | |||
assertEquals(256*10, sh.getColumnWidth((short)0)); | |||
assertEquals(256*10, sh.getColumnWidth((short)1)); | |||
assertEquals(256*10, sh.getColumnWidth((short)2)); | |||
assertEquals(256*10, sh.getColumnWidth(0)); | |||
assertEquals(256*10, sh.getColumnWidth(1)); | |||
assertEquals(256*10, sh.getColumnWidth(2)); | |||
for (char i = 'D'; i <= 'F'; i++) { | |||
short w = (short)(256*12); | |||
sh.setColumnWidth((short)i, w); | |||
assertEquals(w, sh.getColumnWidth((short)i)); | |||
short w = (256*12); | |||
sh.setColumnWidth(i, w); | |||
assertEquals(w, sh.getColumnWidth(i)); | |||
} | |||
//serialize and read again | |||
@@ -821,14 +821,18 @@ public final class TestHSSFSheet extends TestCase { | |||
sh = wb.getSheetAt(0); | |||
assertEquals(10, sh.getDefaultColumnWidth()); | |||
//columns A-C have default width | |||
assertEquals(256*10, sh.getColumnWidth((short)0)); | |||
assertEquals(256*10, sh.getColumnWidth((short)1)); | |||
assertEquals(256*10, sh.getColumnWidth((short)2)); | |||
assertEquals(256*10, sh.getColumnWidth(0)); | |||
assertEquals(256*10, sh.getColumnWidth(1)); | |||
assertEquals(256*10, sh.getColumnWidth(2)); | |||
//columns D-F have custom width | |||
for (char i = 'D'; i <= 'F'; i++) { | |||
short w = (short)(256*12); | |||
assertEquals(w, sh.getColumnWidth((short)i)); | |||
short w = (256*12); | |||
assertEquals(w, sh.getColumnWidth(i)); | |||
} | |||
// check for 16-bit signed/unsigned error: | |||
sh.setColumnWidth(0, 40000); | |||
assertEquals(40000, sh.getColumnWidth(0)); | |||
} | |||
/** |