Description: Defines with width and formatting for a range of columns
REFERENCE: PG 293 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
@author Andrew C. Oliver (acoliver at apache dot org) @version 2.0-pre
1020102110221023102410251026102710281029103010311032
* @see #setColumnWidth(int, int) * @return column width in units of 1/256th of a character width */ public int getColumnWidth(int columnIndex) { ColumnInfoRecord ci = _columnInfos.findColumnInfo(columnIndex); if (ci != null) { return ci.getColumnWidth(); } //default column width is measured in characters //multiply return (256*defaultcolwidth.getColWidth()); }
10441045104610471048104910501051105210531054
* @return index of ExtendedFormatRecord associated with * ColumnInfoRecord that includes the column index or the * index of the default ExtendedFormatRecord (0xF) */ public short getXFIndexForColAt(short columnIndex) { ColumnInfoRecord ci = _columnInfos.findColumnInfo(columnIndex); if (ci != null) { return (short)ci.getXFIndex(); } return 0xF; }
10741075107610771078107910801081108210831084
* @see org.apache.poi.hssf.record.ColumnInfoRecord * @see #setColumnHidden(int, boolean) * @return whether the column is hidden or not. */ public boolean isColumnHidden(int columnIndex) { ColumnInfoRecord cir = _columnInfos.findColumnInfo(columnIndex); if (cir == null) { return false; } return cir.getHidden(); }
457458459460461462463464465466467468469470471472
if (column < 0) throw new IllegalArgumentException( "column parameter out of range: " + column ); if (fromIdx < 0) throw new IllegalArgumentException( "fromIdx parameter out of range: " + fromIdx ); ColumnInfoRecord ci; for (int k = fromIdx; k < records.size(); k++) { ci = ( ColumnInfoRecord ) records.get(k); if ((ci.getFirstColumn() <= column) && (column <= ci.getLastColumn())) { return k; } ci = null; }
475476477478479480481482483484485486487488489490491492493494495496
public void collapseColInfoRecords( int columnIdx ) { if (columnIdx == 0) return; ColumnInfoRecord previousCol = (ColumnInfoRecord) records.get( columnIdx - 1); ColumnInfoRecord currentCol = (ColumnInfoRecord) records.get( columnIdx ); boolean adjacentColumns = previousCol.getLastColumn() == currentCol.getFirstColumn() - 1; if (!adjacentColumns) return; boolean columnsMatch = previousCol.getXFIndex() == currentCol.getXFIndex() && previousCol.getOptions() == currentCol.getOptions() && previousCol.getColumnWidth() == currentCol.getColumnWidth(); if (columnsMatch) { previousCol.setLastColumn( currentCol.getLastColumn() ); records.remove( columnIdx ); } }
7475767778798081828384
public Object clone() { ColumnInfoRecordsAggregate rec = new ColumnInfoRecordsAggregate(); for (int k = 0; k < records.size(); k++) { ColumnInfoRecord ci = ( ColumnInfoRecord ) records.get(k); ci=(ColumnInfoRecord) ci.clone(); rec.insertColumn( ci ); } return rec; }
127128129130131132133134135136137138139140141142143144
} public int findStartOfColumnOutlineGroup(int idx) { // Find the start of the group. ColumnInfoRecord columnInfo = (ColumnInfoRecord) records.get( idx ); int level = columnInfo.getOutlineLevel(); while (idx != 0) { ColumnInfoRecord prevColumnInfo = (ColumnInfoRecord) records.get( idx - 1 ); if (columnInfo.getFirstColumn() - 1 == prevColumnInfo.getLastColumn()) { if (prevColumnInfo.getOutlineLevel() < level) { break; } idx--; columnInfo = prevColumnInfo;
153154155156157158159160161162163164165166167168169170
} public int findEndOfColumnOutlineGroup(int idx) { // Find the end of the group. ColumnInfoRecord columnInfo = (ColumnInfoRecord) records.get( idx ); int level = columnInfo.getOutlineLevel(); while (idx < records.size() - 1) { ColumnInfoRecord nextColumnInfo = (ColumnInfoRecord) records.get( idx + 1 ); if (columnInfo.getLastColumn() + 1 == nextColumnInfo.getFirstColumn()) { if (nextColumnInfo.getOutlineLevel() < level) { break; } idx++; columnInfo = nextColumnInfo;
189190191192193194195196197198199200201202
while (idx < records.size()) { columnInfo.setHidden( hidden ); if (idx + 1 < records.size()) { ColumnInfoRecord nextColumnInfo = (ColumnInfoRecord) records.get( idx + 1 ); if (columnInfo.getLastColumn() + 1 == nextColumnInfo.getFirstColumn()) { if (nextColumnInfo.getOutlineLevel() < level) break; columnInfo = nextColumnInfo; } else {
277278279280281282283284285286287288289
int idx = findColumnIdx( columnNumber, 0 ); if (idx == -1) return; // Find the start of the group. ColumnInfoRecord columnInfo = (ColumnInfoRecord) records.get( findStartOfColumnOutlineGroup( idx ) ); // Hide all the columns until the end of the group columnInfo = writeHidden( columnInfo, idx, true ); // Write collapse field setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, null, Boolean.TRUE); }