Added the ability to set the default style for an individual column in a sheet.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@371080 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
84e47bd7bb
commit
aab09332e7
@ -44,7 +44,7 @@ import java.util.List; // normally I don't do this, buy we literally mean ALL
|
|||||||
* <P>
|
* <P>
|
||||||
* @author Andrew C. Oliver (acoliver at apache dot org)
|
* @author Andrew C. Oliver (acoliver at apache dot org)
|
||||||
* @author Glen Stampoultzis (glens at apache.org)
|
* @author Glen Stampoultzis (glens at apache.org)
|
||||||
* @author Shawn Laubach (slaubach at apache dot org) Gridlines, Headers, Footers, and PrintSetup
|
* @author Shawn Laubach (slaubach at apache dot org) Gridlines, Headers, Footers, PrintSetup, and Setting Default Column Styles
|
||||||
* @author Jason Height (jheight at chariot dot net dot au) Clone support. DBCell & Index Record writing support
|
* @author Jason Height (jheight at chariot dot net dot au) Clone support. DBCell & Index Record writing support
|
||||||
* @author Brian Sanders (kestrel at burdell dot org) Active Cell support
|
* @author Brian Sanders (kestrel at burdell dot org) Active Cell support
|
||||||
*
|
*
|
||||||
@ -1848,9 +1848,18 @@ public class Sheet implements Model
|
|||||||
if (columns == null)
|
if (columns == null)
|
||||||
columns = new ColumnInfoRecordsAggregate();
|
columns = new ColumnInfoRecordsAggregate();
|
||||||
|
|
||||||
columns.setColumn( column, width, level, hidden, collapsed );
|
columns.setColumn( column, null, width, level, hidden, collapsed );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setColumn(short column, Short xfStyle, Short width, Integer level, Boolean hidden, Boolean collapsed)
|
||||||
|
{
|
||||||
|
if (columns == null)
|
||||||
|
columns = new ColumnInfoRecordsAggregate();
|
||||||
|
|
||||||
|
columns.setColumn( column, xfStyle, width, level, hidden, collapsed );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an outline group for the specified columns.
|
* Creates an outline group for the specified columns.
|
||||||
* @param fromColumn group from this column (inclusive)
|
* @param fromColumn group from this column (inclusive)
|
||||||
|
@ -269,7 +269,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
columnInfo = writeHidden( columnInfo, idx, true );
|
columnInfo = writeHidden( columnInfo, idx, true );
|
||||||
|
|
||||||
// Write collapse field
|
// Write collapse field
|
||||||
setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, Boolean.TRUE);
|
setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, null, Boolean.TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void expandColumn( short columnNumber )
|
public void expandColumn( short columnNumber )
|
||||||
@ -307,7 +307,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write collapse field
|
// Write collapse field
|
||||||
setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, Boolean.FALSE);
|
setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, null, Boolean.FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -327,7 +327,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setColumn(short column, Short width, Integer level, Boolean hidden, Boolean collapsed)
|
public void setColumn(short column, Short xfIndex, Short width, Integer level, Boolean hidden, Boolean collapsed)
|
||||||
{
|
{
|
||||||
ColumnInfoRecord ci = null;
|
ColumnInfoRecord ci = null;
|
||||||
int k = 0;
|
int k = 0;
|
||||||
@ -345,11 +345,12 @@ public class ColumnInfoRecordsAggregate
|
|||||||
|
|
||||||
if (ci != null)
|
if (ci != null)
|
||||||
{
|
{
|
||||||
|
boolean styleChanged = xfIndex != null && ci.getXFIndex() != xfIndex.shortValue();
|
||||||
boolean widthChanged = width != null && ci.getColumnWidth() != width.shortValue();
|
boolean widthChanged = width != null && ci.getColumnWidth() != width.shortValue();
|
||||||
boolean levelChanged = level != null && ci.getOutlineLevel() != level.intValue();
|
boolean levelChanged = level != null && ci.getOutlineLevel() != level.intValue();
|
||||||
boolean hiddenChanged = hidden != null && ci.getHidden() != hidden.booleanValue();
|
boolean hiddenChanged = hidden != null && ci.getHidden() != hidden.booleanValue();
|
||||||
boolean collapsedChanged = collapsed != null && ci.getCollapsed() != collapsed.booleanValue();
|
boolean collapsedChanged = collapsed != null && ci.getCollapsed() != collapsed.booleanValue();
|
||||||
boolean columnChanged = widthChanged || levelChanged || hiddenChanged || collapsedChanged;
|
boolean columnChanged = styleChanged || widthChanged || levelChanged || hiddenChanged || collapsedChanged;
|
||||||
if (!columnChanged)
|
if (!columnChanged)
|
||||||
{
|
{
|
||||||
// do nothing...nothing changed.
|
// do nothing...nothing changed.
|
||||||
@ -357,7 +358,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
else if ((ci.getFirstColumn() == column)
|
else if ((ci.getFirstColumn() == column)
|
||||||
&& (ci.getLastColumn() == column))
|
&& (ci.getLastColumn() == column))
|
||||||
{ // if its only for this cell then
|
{ // if its only for this cell then
|
||||||
setColumnInfoFields( ci, width, level, hidden, collapsed );
|
setColumnInfoFields( ci, xfIndex, width, level, hidden, collapsed );
|
||||||
}
|
}
|
||||||
else if ((ci.getFirstColumn() == column)
|
else if ((ci.getFirstColumn() == column)
|
||||||
|| (ci.getLastColumn() == column))
|
|| (ci.getLastColumn() == column))
|
||||||
@ -378,7 +379,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
nci.setLastColumn(column);
|
nci.setLastColumn(column);
|
||||||
nci.setOptions(ci.getOptions());
|
nci.setOptions(ci.getOptions());
|
||||||
nci.setXFIndex(ci.getXFIndex());
|
nci.setXFIndex(ci.getXFIndex());
|
||||||
setColumnInfoFields( nci, width, level, hidden, collapsed );
|
setColumnInfoFields( nci, xfIndex, width, level, hidden, collapsed );
|
||||||
|
|
||||||
insertColumn(k, nci);
|
insertColumn(k, nci);
|
||||||
}
|
}
|
||||||
@ -393,7 +394,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
nci.setLastColumn(column);
|
nci.setLastColumn(column);
|
||||||
nci.setOptions(ci.getOptions());
|
nci.setOptions(ci.getOptions());
|
||||||
nci.setXFIndex(ci.getXFIndex());
|
nci.setXFIndex(ci.getXFIndex());
|
||||||
setColumnInfoFields( nci, width, level, hidden, collapsed );
|
setColumnInfoFields( nci, xfIndex, width, level, hidden, collapsed );
|
||||||
insertColumn(++k, nci);
|
insertColumn(++k, nci);
|
||||||
|
|
||||||
nci = ( ColumnInfoRecord ) createColInfo();
|
nci = ( ColumnInfoRecord ) createColInfo();
|
||||||
@ -413,7 +414,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
|
|
||||||
nci.setFirstColumn(column);
|
nci.setFirstColumn(column);
|
||||||
nci.setLastColumn(column);
|
nci.setLastColumn(column);
|
||||||
setColumnInfoFields( nci, width, level, hidden, collapsed );
|
setColumnInfoFields( nci, xfIndex, width, level, hidden, collapsed );
|
||||||
insertColumn(k, nci);
|
insertColumn(k, nci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -421,8 +422,10 @@ public class ColumnInfoRecordsAggregate
|
|||||||
/**
|
/**
|
||||||
* Sets all non null fields into the <code>ci</code> parameter.
|
* Sets all non null fields into the <code>ci</code> parameter.
|
||||||
*/
|
*/
|
||||||
private void setColumnInfoFields( ColumnInfoRecord ci, Short width, Integer level, Boolean hidden, Boolean collapsed )
|
private void setColumnInfoFields( ColumnInfoRecord ci, Short xfStyle, Short width, Integer level, Boolean hidden, Boolean collapsed )
|
||||||
{
|
{
|
||||||
|
if (xfStyle != null)
|
||||||
|
ci.setXFIndex(xfStyle.shortValue());
|
||||||
if (width != null)
|
if (width != null)
|
||||||
ci.setColumnWidth(width.shortValue());
|
ci.setColumnWidth(width.shortValue());
|
||||||
if (level != null)
|
if (level != null)
|
||||||
@ -500,7 +503,7 @@ public class ColumnInfoRecordsAggregate
|
|||||||
level = Math.min(7, level);
|
level = Math.min(7, level);
|
||||||
fromIdx = columnIdx - 1; // subtract 1 just in case this column is collapsed later.
|
fromIdx = columnIdx - 1; // subtract 1 just in case this column is collapsed later.
|
||||||
}
|
}
|
||||||
setColumn((short)i, null, new Integer(level), null, null);
|
setColumn((short)i, null, null, new Integer(level), null, null);
|
||||||
columnIdx = findColumnIdx( i, Math.max(0, fromIdx ) );
|
columnIdx = findColumnIdx( i, Math.max(0, fromIdx ) );
|
||||||
collapseColInfoRecords( columnIdx );
|
collapseColInfoRecords( columnIdx );
|
||||||
}
|
}
|
||||||
|
@ -1331,5 +1331,13 @@ public class HSSFSheet
|
|||||||
sheet.setRowGroupCollapsed( row, collapse );
|
sheet.setRowGroupCollapsed( row, collapse );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default column style for a given column. POI will only apply this style to new cells added to the sheet.
|
||||||
|
*
|
||||||
|
* @param fromCol the starting column index
|
||||||
|
* @param column the column index
|
||||||
|
*/
|
||||||
|
public void setDefaultColumnStyle(short column, HSSFCellStyle style) {
|
||||||
|
sheet.setColumn(column, new Short(style.getIndex()), null, null, null, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -469,6 +469,17 @@ public class TestHSSFSheet
|
|||||||
assertNotNull(r.getCell((short)1));
|
assertNotNull(r.getCell((short)1));
|
||||||
assertEquals("formula", r.getCell((short)1).getCellFormula(), "A1*2");
|
assertEquals("formula", r.getCell((short)1).getCellFormula(), "A1*2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** test that new default column styles get applied */
|
||||||
|
public void testDefaultColumnStyle() {
|
||||||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
|
HSSFCellStyle style = wb.createCellStyle();
|
||||||
|
HSSFSheet s = wb.createSheet();
|
||||||
|
s.setDefaultColumnStyle((short)0, style);
|
||||||
|
HSSFRow r = s.createRow(0);
|
||||||
|
HSSFCell c = r.createCell((short)0);
|
||||||
|
assertEquals("style should match", style.getIndex(), c.getCellStyle().getIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void main(java.lang.String[] args) {
|
public static void main(java.lang.String[] args) {
|
||||||
|
Loading…
Reference in New Issue
Block a user