/** * creates the ColumnInfo Record and sets it to a default column/width * * @see loci.poi.hssf.record.ColumnInfoRecord * @return record containing a ColumnInfoRecord */ public static Record createColInfo() { ColumnInfoRecord retval = new ColumnInfoRecord(); retval.setColumnWidth((short) 2275); // was: retval.setOptions(( short ) 6); retval.setOptions((short) 2); retval.setXFIndex((short) 0x0f); return retval; }
/** Sets all non null fields into the <code>ci</code> parameter. */ 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) ci.setColumnWidth(width.shortValue()); if (level != null) ci.setOutlineLevel(level.shortValue()); if (hidden != null) ci.setHidden(hidden.booleanValue()); if (collapsed != null) ci.setCollapsed(collapsed.booleanValue()); }
public void setColumn( short column, Short xfIndex, Short width, Integer level, Boolean hidden, Boolean collapsed) { ColumnInfoRecord ci = null; int k = 0; for (k = 0; k < records.size(); k++) { ci = (ColumnInfoRecord) records.get(k); if ((ci.getFirstColumn() <= column) && (column <= ci.getLastColumn())) { break; } ci = null; } if (ci != null) { boolean styleChanged = xfIndex != null && ci.getXFIndex() != xfIndex.shortValue(); boolean widthChanged = width != null && ci.getColumnWidth() != width.shortValue(); boolean levelChanged = level != null && ci.getOutlineLevel() != level.intValue(); boolean hiddenChanged = hidden != null && ci.getHidden() != hidden.booleanValue(); boolean collapsedChanged = collapsed != null && ci.getCollapsed() != collapsed.booleanValue(); boolean columnChanged = styleChanged || widthChanged || levelChanged || hiddenChanged || collapsedChanged; if (!columnChanged) { // do nothing...nothing changed. } else if ((ci.getFirstColumn() == column) && (ci.getLastColumn() == column)) { // if its only for this cell then setColumnInfoFields(ci, xfIndex, width, level, hidden, collapsed); } else if ((ci.getFirstColumn() == column) || (ci.getLastColumn() == column)) { // okay so the width is different but the first or last column == the column we'return // setting // we'll just divide the info and create a new one if (ci.getFirstColumn() == column) { ci.setFirstColumn((short) (column + 1)); } else { ci.setLastColumn((short) (column - 1)); } ColumnInfoRecord nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn(column); nci.setLastColumn(column); nci.setOptions(ci.getOptions()); nci.setXFIndex(ci.getXFIndex()); setColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed); insertColumn(k, nci); } else { // split to 3 records short lastcolumn = ci.getLastColumn(); ci.setLastColumn((short) (column - 1)); ColumnInfoRecord nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn(column); nci.setLastColumn(column); nci.setOptions(ci.getOptions()); nci.setXFIndex(ci.getXFIndex()); setColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed); insertColumn(++k, nci); nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn((short) (column + 1)); nci.setLastColumn(lastcolumn); nci.setOptions(ci.getOptions()); nci.setXFIndex(ci.getXFIndex()); nci.setColumnWidth(ci.getColumnWidth()); insertColumn(++k, nci); } } else { // okay so there ISN'T a column info record that cover's this column so lets create one! ColumnInfoRecord nci = (ColumnInfoRecord) createColInfo(); nci.setFirstColumn(column); nci.setLastColumn(column); setColumnInfoFields(nci, xfIndex, width, level, hidden, collapsed); insertColumn(k, nci); } }