/** * Returns the name of this sheet * * @return the name of this sheet */ @Override public String getSheetName() { return sheet.getName(); }
private CTSheet addSheet(String sheetname) { CTSheet sheet = workbook.getSheets().addNewSheet(); sheet.setName(sheetname); return sheet; }
/** * sets the order of appearance for a given sheet. * * @param sheetname the name of the sheet to reorder * @param pos the position that we want to insert the sheet into (0 based) */ @Override public void setSheetOrder(String sheetname, int pos) { int idx = getSheetIndex(sheetname); sheets.add(pos, sheets.remove(idx)); // Reorder CTSheets CTSheets ct = workbook.getSheets(); XmlObject cts = ct.getSheetArray(idx).copy(); workbook.getSheets().removeSheet(idx); CTSheet newcts = ct.insertNewSheet(pos); newcts.set(cts); //notify sheets //noinspection deprecation CTSheet[] sheetArray = ct.getSheetArray(); for(int i=0; i < sheetArray.length; i++) { sheets.get(i).sheet = sheetArray[i]; } updateNamedRangesAfterSheetReorder(idx, pos); updateActiveSheetAfterSheetReorder(idx, pos); }
/** * Not normally to be called externally, but possibly to be overridden to avoid * the DOM based parse of large sheets (see examples). */ public void parseSheet(Map<String, XSSFSheet> shIdMap, CTSheet ctSheet) { XSSFSheet sh = shIdMap.get(ctSheet.getId()); if(sh == null) { logger.log(POILogger.WARN, "Sheet with name " + ctSheet.getName() + " and r:id " + ctSheet.getId()+ " was defined, but didn't exist in package, skipping"); return; } sh.sheet = ctSheet; sh.onDocumentRead(); sheets.add(sh); }
while(true) { for(XSSFSheet sh : sheets) { sheetNumber = (int)Math.max(sh.sheet.getSheetId() + 1, sheetNumber); XSSFSheet wrapper = rp.getDocumentPart(); wrapper.sheet = sheet; sheet.setId(rp.getRelationship().getId()); sheet.setSheetId(sheetNumber); if (sheets.isEmpty()) { wrapper.setSelected(true);
private void translateSheetName(XSSFSheet sheet, XLXContext context) throws Exception { for( CTSheet next : sheet.getWorkbook().getCTWorkbook().getSheets().getSheetArray()){ if(next.getName().equals(sheet.getSheetName())){ String rawName = next.getName(); XLSXExpression exp = CellExpressionParser.parseExpression(next.getName()); String translatedName = (String) exp.evaluate(context); next.setName(translatedName); translateSheetName(sheet, rawName, translatedName); break; } } }
/** * Fired when a formula is deleted from this workbook, * for example when calling cell.setCellFormula(null) * * @see XSSFCell#setCellFormula(String) */ protected void onDeleteFormula(XSSFCell cell){ if(calcChain != null) { int sheetId = (int)cell.getSheet().sheet.getSheetId(); calcChain.removeItem(sheetId, cell.getReference()); } }
@Override public boolean isSheetHidden(int sheetIx) { validateSheetIndex(sheetIx); CTSheet ctSheet = sheets.get(sheetIx).sheet; return ctSheet.getState() == STSheetState.HIDDEN; }
@Override public void setSheetVisibility(int sheetIx, SheetVisibility visibility) { validateSheetIndex(sheetIx); final CTSheet ctSheet = sheets.get(sheetIx).sheet; switch (visibility) { case VISIBLE: ctSheet.setState(STSheetState.VISIBLE); break; case HIDDEN: ctSheet.setState(STSheetState.HIDDEN); break; case VERY_HIDDEN: ctSheet.setState(STSheetState.VERY_HIDDEN); break; default: throw new IllegalArgumentException("This should never happen"); } }
public PackagePart getSheetPart() { String sheetId = ctSheet.getId(); return sheetMap.get(sheetId); }
for(XSSFSheet sh : sheets) sheetNumber = (int)Math.max(sh.sheet.getSheetId() + 1, sheetNumber); sheet.setId(wrapper.getPackageRelationship().getId()); sheet.setSheetId(sheetNumber); if(sheets.size() == 0) wrapper.setSelected(true); sheets.add(wrapper);
/** * Not normally to be called externally, but possibly to be overridden to avoid * the DOM based parse of large sheets (see examples). */ public void parseSheet(Map<String, XSSFSheet> shIdMap, CTSheet ctSheet) { XSSFSheet sh = shIdMap.get(ctSheet.getId()); if(sh == null) { logger.log(POILogger.WARN, "Sheet with name " + ctSheet.getName() + " and r:id " + ctSheet.getId()+ " was defined, but didn't exist in package, skipping"); return; } sh.sheet = ctSheet; sh.onDocumentRead(); sheets.add(sh); }
/** * Returns the sheet's comments object if there is one, * or null if not * * @param create create a new comments table if it does not exist */ protected CommentsTable getCommentsTable(boolean create) { if(sheetComments == null && create){ // Try to create a comments table with the same number as // the sheet has (i.e. sheet 1 -> comments 1) try { sheetComments = (CommentsTable)createRelationship( XSSFRelation.SHEET_COMMENTS, XSSFFactory.getInstance(), (int)sheet.getSheetId()); } catch(PartAlreadyExistsException e) { // Technically a sheet doesn't need the same number as // it's comments, and clearly someone has already pinched // our number! Go for the next available one instead sheetComments = (CommentsTable)createRelationship( XSSFRelation.SHEET_COMMENTS, XSSFFactory.getInstance(), -1); } } return sheetComments; }
@Override public boolean isSheetVeryHidden(int sheetIx) { validateSheetIndex(sheetIx); CTSheet ctSheet = sheets.get(sheetIx).sheet; return ctSheet.getState() == STSheetState.VERY_HIDDEN; }
@Override public void setSheetVisibility(int sheetIx, SheetVisibility visibility) { validateSheetIndex(sheetIx); final CTSheet ctSheet = sheets.get(sheetIx).sheet; switch (visibility) { case VISIBLE: ctSheet.setState(STSheetState.VISIBLE); break; case HIDDEN: ctSheet.setState(STSheetState.HIDDEN); break; case VERY_HIDDEN: ctSheet.setState(STSheetState.VERY_HIDDEN); break; default: throw new IllegalArgumentException("This should never happen"); } }
/** * Returns input stream of the next sheet in the iteration * * @return input stream of the next sheet in the iteration */ public InputStream next() { ctSheet = sheetIterator.next(); String sheetId = ctSheet.getId(); try { PackagePart sheetPkg = sheetMap.get(sheetId); return sheetPkg.getInputStream(); } catch(IOException e) { throw new POIXMLException(e); } }
while(true) { for(XSSFSheet sh : sheets) { sheetNumber = (int)Math.max(sh.sheet.getSheetId() + 1, sheetNumber); XSSFSheet wrapper = rp.getDocumentPart(); wrapper.sheet = sheet; sheet.setId(rp.getRelationship().getId()); sheet.setSheetId(sheetNumber); if (sheets.isEmpty()) { wrapper.setSelected(true);
/** * Determines whether a workbook contains the provided sheet name. * For the purpose of comparison, long names are truncated to 31 chars. * * @param name the name to test (case insensitive match) * @param excludeSheetIdx the sheet to exclude from the check or -1 to include all sheets in the check. * @return true if the sheet contains the name, false otherwise. */ private boolean containsSheet(String name, int excludeSheetIdx) { //noinspection deprecation CTSheet[] ctSheetArray = workbook.getSheets().getSheetArray(); if (name.length() > MAX_SENSITIVE_SHEET_NAME_LEN) { name = name.substring(0, MAX_SENSITIVE_SHEET_NAME_LEN); } for (int i = 0; i < ctSheetArray.length; i++) { String ctName = ctSheetArray[i].getName(); if (ctName.length() > MAX_SENSITIVE_SHEET_NAME_LEN) { ctName = ctName.substring(0, MAX_SENSITIVE_SHEET_NAME_LEN); } if (excludeSheetIdx != i && name.equalsIgnoreCase(ctName)) { return true; } } return false; }
/** * sets the order of appearance for a given sheet. * * @param sheetname the name of the sheet to reorder * @param pos the position that we want to insert the sheet into (0 based) */ public void setSheetOrder(String sheetname, int pos) { int idx = getSheetIndex(sheetname); sheets.add(pos, sheets.remove(idx)); // Reorder CTSheets CTSheets ct = workbook.getSheets(); XmlObject cts = ct.getSheetArray(idx).copy(); workbook.getSheets().removeSheet(idx); CTSheet newcts = ct.insertNewSheet(pos); newcts.set(cts); //notify sheets for(int i=0; i < sheets.size(); i++) { sheets.get(i).sheet = ct.getSheetArray(i); } }