Example usage for org.apache.poi.ss.usermodel Sheet getLastRowNum

List of usage examples for org.apache.poi.ss.usermodel Sheet getLastRowNum

Introduction

In this page you can find the example usage for org.apache.poi.ss.usermodel Sheet getLastRowNum.

Prototype

int getLastRowNum();

Source Link

Document

Gets the last row on the sheet Note: rows which had content before and were set to empty later might still be counted as rows by Excel and Apache POI, so the result of this method will include such rows and thus the returned value might be higher than expected!

Usage

From source file:org.datanucleus.store.excel.ExcelUtils.java

License:Open Source License

/**
 * Convenience method to find the number of rows in a workbook.
 * This takes into account the fact that it seems to be impossible (with Apache POI 3.0.2)
 * to delete rows from a sheet. Consequently what we do is leave the row but delete
 * all cells. When returning the number of rows this ignores rows that have no cells.
 * @param op ObjectProvider for the object
 * @param wb Workbook/*www. j  a v a  2 s. com*/
 * @return Number of (active) rows (or 0 if no active rows)
 */
public static int getNumberOfRowsInSheetOfWorkbook(ObjectProvider op, Workbook wb) {
    int numRows = 0;

    final AbstractClassMetaData cmd = op.getClassMetaData();
    Table table = op.getExecutionContext().getStoreManager()
            .getStoreDataForClass(op.getClassMetaData().getFullClassName()).getTable();
    String sheetName = table.getName();
    final Sheet sheet = wb.getSheet(sheetName);
    if (cmd.getIdentityType() == IdentityType.APPLICATION) {
        int[] pkFieldNumbers = cmd.getPKMemberPositions();
        Object[] pkFieldValues = new Object[pkFieldNumbers.length];
        for (int i = 0; i < pkFieldNumbers.length; i++) {
            pkFieldValues[i] = op.provideField(pkFieldNumbers[i]);
        }

        if (sheet != null && sheet.getPhysicalNumberOfRows() > 0) {
            for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum() + 1; i++) {
                Row row = sheet.getRow(i);
                if (row != null) {
                    boolean validRow = true;
                    for (int j = 0; j < pkFieldNumbers.length; j++) {
                        AbstractMemberMetaData pkMmd = cmd
                                .getMetaDataForManagedMemberAtAbsolutePosition(pkFieldNumbers[j]);
                        int colNumber = table.getMemberColumnMappingForMember(pkMmd).getColumn(0).getPosition();
                        Cell cell = row.getCell(colNumber);
                        if (cell == null) {
                            // Valid row. Apache POI would return cell as null if not active
                            validRow = false;
                        }
                    }
                    if (validRow) {
                        numRows++;
                    }
                }
            }
        }
    } else if (cmd.getIdentityType() == IdentityType.DATASTORE) {
        if (sheet != null && sheet.getPhysicalNumberOfRows() > 0) {
            int datastoreIdColNumber = table.getDatastoreIdColumn().getPosition();
            for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum() + 1; i++) {
                Row rrow = sheet.getRow(i);
                Cell cell = rrow.getCell(datastoreIdColNumber);
                if (cell != null) {
                    // Valid row. Apache POI would return cell as null if not active
                    numRows++;
                }
            }
        }
    } else {
        if (sheet != null && sheet.getPhysicalNumberOfRows() > 0) {
            for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum() + 1; i++) {
                Row rrow = sheet.getRow(i);
                Cell cell = rrow.getCell(0); // Use first cell since no identity as such
                if (cell != null) {
                    // Valid row. Apache POI would return cell as null if not active
                    numRows++;
                }
            }
        }
    }

    return numRows;
}

From source file:org.datanucleus.store.excel.query.ExcelCandidateList.java

License:Open Source License

/**
 * Constructor for the lazy loaded Excel candidate list.
 * @param cls The candidate class/*from w  ww .  j a va 2s.  c  o m*/
 * @param subclasses Whether to include subclasses
 * @param ec execution context
 * @param cacheType Type of caching
 * @param mconn Connection to the datastore
 * @param ignoreCache Whether to ignore the cache on object retrieval
 */
public ExcelCandidateList(Class cls, boolean subclasses, ExecutionContext ec, String cacheType,
        ManagedConnection mconn, boolean ignoreCache) {
    super(cls, subclasses, ec, cacheType);
    this.mconn = mconn;
    this.ignoreCache = ignoreCache;

    // Count the instances per class by scanning the associated worksheets
    numberInstancesPerClass = new ArrayList<Integer>();
    ExcelStoreManager storeMgr = (ExcelStoreManager) ec.getStoreManager();
    Iterator<AbstractClassMetaData> cmdIter = cmds.iterator();
    Workbook workbook = (Workbook) mconn.getConnection();
    while (cmdIter.hasNext()) {
        AbstractClassMetaData cmd = cmdIter.next();

        if (!storeMgr.managesClass(cmd.getFullClassName())) {
            // Make sure schema exists, using this connection
            storeMgr.manageClasses(new String[] { cmd.getFullClassName() }, ec.getClassLoaderResolver(),
                    workbook);
        }
        Table table = ec.getStoreManager().getStoreDataForClass(cmd.getFullClassName()).getTable();
        String sheetName = table.getName();
        Sheet sheet = workbook.getSheet(sheetName);
        int size = 0;
        if (sheet != null && sheet.getPhysicalNumberOfRows() > 0) {
            // Take the next row in this worksheet
            int idColIndex = -1;
            if (cmd.getIdentityType() == IdentityType.APPLICATION) {
                int[] pkFieldNums = cmd.getPKMemberPositions(); // TODO Check all pk cols?
                AbstractMemberMetaData pkMmd = cmd
                        .getMetaDataForManagedMemberAtAbsolutePosition(pkFieldNums[0]);
                idColIndex = table.getMemberColumnMappingForMember(pkMmd).getColumn(0).getPosition();
            } else if (cmd.getIdentityType() == IdentityType.DATASTORE) {
                idColIndex = table.getDatastoreIdColumn().getPosition();
            } else {
                idColIndex = 0; // No id column with nondurable, so just take the first
            }

            for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
                Row row = sheet.getRow(i);
                if (row.getCell(idColIndex) != null) // Omit inactive rows
                {
                    size++;
                }
            }
        }
        numberInstancesPerClass.add(size);
    }
}

From source file:org.datanucleus.store.excel.query.ExcelCandidateList.java

License:Open Source License

protected Object retrieveObjectForIndex(int index) {
    if (index < 0 || index >= getSize()) {
        throw new NoSuchElementException();
    }/*  w w w  .  j a  va 2s.c om*/

    Iterator<AbstractClassMetaData> cmdIter = cmds.iterator();
    Iterator<Integer> numIter = numberInstancesPerClass.iterator();
    int first = 0;
    int last = -1;
    while (cmdIter.hasNext()) {
        final AbstractClassMetaData cmd = cmdIter.next();
        int number = numIter.next();
        last = first + number;

        if (index >= first && index < last) {
            // Object is of this candidate type, so find the object
            Table table = ec.getStoreManager().getStoreDataForClass(cmd.getFullClassName()).getTable();
            String sheetName = table.getName();
            Workbook workbook = (Workbook) mconn.getConnection();
            final Sheet worksheet = workbook.getSheet(sheetName);
            if (worksheet != null) {
                int idColIndex = -1;
                if (cmd.getIdentityType() == IdentityType.APPLICATION) {
                    int[] pkFieldNums = cmd.getPKMemberPositions(); // TODO Check all pk cols?
                    AbstractMemberMetaData pkMmd = cmd
                            .getMetaDataForManagedMemberAtAbsolutePosition(pkFieldNums[0]);
                    idColIndex = table.getMemberColumnMappingForMember(pkMmd).getColumn(0).getPosition();
                } else if (cmd.getIdentityType() == IdentityType.DATASTORE) {
                    idColIndex = table.getDatastoreIdColumn().getPosition();
                } else {
                    idColIndex = 0; // No id column with nondurable, so just take the first
                }

                int current = first;
                for (int i = worksheet.getFirstRowNum(); i <= worksheet.getLastRowNum(); i++) {
                    final Row row = worksheet.getRow(i);
                    if (row.getCell(idColIndex) != null) // Omit inactive rows
                    {
                        if (current == index) {
                            // This row equates to the required index
                            final int rowNumber = i;
                            if (cmd.getIdentityType() == IdentityType.APPLICATION) {
                                final FetchFieldManager fm = new FetchFieldManager(ec, cmd, worksheet,
                                        rowNumber, table);
                                Object id = IdentityUtils.getApplicationIdentityForResultSetRow(ec, cmd, null,
                                        false, fm);

                                return ec.findObject(id, new FieldValues() {
                                    // ObjectProvider calls the fetchFields method
                                    public void fetchFields(ObjectProvider op) {
                                        op.replaceFields(cmd.getAllMemberPositions(), fm);
                                    }

                                    public void fetchNonLoadedFields(ObjectProvider sm) {
                                        sm.replaceNonLoadedFields(cmd.getAllMemberPositions(), fm);
                                    }

                                    public FetchPlan getFetchPlanForLoading() {
                                        return null;
                                    }
                                }, null, ignoreCache, false);
                            } else if (cmd.getIdentityType() == IdentityType.DATASTORE) {
                                final FetchFieldManager fm = new FetchFieldManager(ec, cmd, worksheet,
                                        rowNumber, table);
                                Object id = null;
                                Cell idCell = row.getCell(idColIndex);
                                int type = idCell.getCellType();
                                if (type == Cell.CELL_TYPE_STRING) {
                                    String key = idCell.getRichStringCellValue().getString();
                                    id = ec.getNucleusContext().getIdentityManager()
                                            .getDatastoreId(cmd.getFullClassName(), key);
                                } else if (type == Cell.CELL_TYPE_NUMERIC) {
                                    long key = (long) idCell.getNumericCellValue();
                                    id = ec.getNucleusContext().getIdentityManager()
                                            .getDatastoreId(cmd.getFullClassName(), key);
                                }
                                return ec.findObject(id, new FieldValues() {
                                    // ObjectProvider calls the fetchFields method
                                    public void fetchFields(ObjectProvider op) {
                                        op.replaceFields(cmd.getAllMemberPositions(), fm);
                                    }

                                    public void fetchNonLoadedFields(ObjectProvider op) {
                                        op.replaceNonLoadedFields(cmd.getAllMemberPositions(), fm);
                                    }

                                    public FetchPlan getFetchPlanForLoading() {
                                        return null;
                                    }
                                }, null, ignoreCache, false);
                            } else {
                                // Nondurable identity
                                final FetchFieldManager fm = new FetchFieldManager(ec, cmd, worksheet,
                                        rowNumber, table);
                                Object id = new SCOID(cmd.getFullClassName());
                                return ec.findObject(id, new FieldValues() {
                                    // ObjectProvider calls the fetchFields method
                                    public void fetchFields(ObjectProvider op) {
                                        op.replaceFields(cmd.getAllMemberPositions(), fm);
                                    }

                                    public void fetchNonLoadedFields(ObjectProvider sm) {
                                        sm.replaceNonLoadedFields(cmd.getAllMemberPositions(), fm);
                                    }

                                    public FetchPlan getFetchPlanForLoading() {
                                        return null;
                                    }
                                }, null, ignoreCache, false);
                            }
                        }

                        current++;
                    }
                }
            }
        } else {
            first += number;
        }
    }

    return null;
}

From source file:org.datanucleus.store.excel.valuegenerator.IncrementGenerator.java

License:Open Source License

protected ValueGenerationBlock<Long> reserveBlock(long size) {
    if (size < 1) {
        return null;
    }//from w w  w  . ja v  a 2 s  . com

    // Allocate value(s)
    ManagedConnection mconn = connectionProvider.retrieveConnection();
    List<Long> oids = new ArrayList<Long>();
    try {
        // Create the worksheet if not existing
        Workbook spreadsheetDoc = (Workbook) mconn.getConnection();
        Sheet sheet = spreadsheetDoc.getSheet(worksheetName);
        Row row = null;
        Cell valueCell = null;
        if (sheet == null) {
            if (!storeMgr.getSchemaHandler().isAutoCreateTables()) {
                throw new NucleusUserException(Localiser.msg("040011", worksheetName));
            }

            sheet = spreadsheetDoc.createSheet(worksheetName);
            row = sheet.createRow(0);
            Cell cell = row.createCell(0);
            cell.setCellValue(key);
            valueCell = row.createCell(1);
            valueCell.setCellValue(Double.valueOf(0));
        } else {
            for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum() + 1; i++) {
                Row tblRow = sheet.getRow(i);
                if (tblRow != null) {
                    Cell tblCell = tblRow.getCell(0);
                    if (tblCell.getStringCellValue().equals(key)) {
                        row = tblRow;
                        valueCell = row.getCell(1);
                        break;
                    }
                }
            }
            if (row == null) {
                row = sheet.createRow(sheet.getLastRowNum() + 1);

                Cell cell1 = row.createCell(0);
                cell1.setCellValue(key);
                valueCell = row.createCell(1);
                valueCell.setCellValue(Double.valueOf(0));
            }
        }

        // Update the row
        if (valueCell != null) {
            NucleusLogger.VALUEGENERATION
                    .debug("Allowing " + size + " values for increment generator for " + key);
            long currentVal = (long) valueCell.getNumericCellValue();
            valueCell.setCellValue(Double.valueOf(currentVal + size));
            for (int i = 0; i < size; i++) {
                oids.add(currentVal + 1);
                currentVal++;
            }
        }
    } finally {
        connectionProvider.releaseConnection();
    }
    return new ValueGenerationBlock<Long>(oids);
}

From source file:org.dbflute.helper.io.xls.DfTableXlsReader.java

License:Apache License

protected DfDataTable setupTable(Sheet sheet, String tableName, final DfDataTable table) {
    final int rowCount = sheet.getLastRowNum();
    final Row nameRow = sheet.getRow(0);
    if (nameRow == null) {
        throwXlsReaderFirstRowNotColumnDefinitionException(tableName);
    }//from   w  w  w .  j  a  va 2s .c  o m
    if (rowCount > 0) {
        setupColumns(table, nameRow, sheet.getRow(1));
        setupRows(table, sheet);
    } else if (rowCount == 0) {
        setupColumns(table, nameRow, null);
    }
    return table;
}

From source file:org.dbunit.dataset.excel.MyXlsTable.java

License:Open Source License

public MyXlsTable(String sheetName, Sheet sheet) throws DataSetException {
    int rowCount = sheet.getLastRowNum();
    if (rowCount >= 0 && sheet.getRow(0) != null) {
        _metaData = createMetaData(sheetName, sheet.getRow(0));
    } else {//from  ww  w .  j  a va2  s .  c  o m
        _metaData = new DefaultTableMetaData(sheetName, new Column[0]);
    }

    _sheet = sheet;

    // Needed for later "BigDecimal"/"Number" conversion
    symbols.setDecimalSeparator('.');
}

From source file:org.drools.decisiontable.parser.xls.ExcelParser.java

License:Apache License

private void processSheet(Sheet sheet, List<? extends DataListener> listeners) {
    int maxRows = sheet.getLastRowNum();

    CellRangeAddress[] mergedRanges = getMergedCells(sheet);
    DataFormatter formatter = new DataFormatter(Locale.ENGLISH);
    FormulaEvaluator formulaEvaluator = sheet.getWorkbook().getCreationHelper().createFormulaEvaluator();

    for (int i = 0; i <= maxRows; i++) {
        Row row = sheet.getRow(i);/*from  w  ww  . ja v  a 2 s.  c  om*/
        int lastCellNum = row != null ? row.getLastCellNum() : 0;
        newRow(listeners, i, lastCellNum);

        for (int cellNum = 0; cellNum < lastCellNum; cellNum++) {
            Cell cell = row.getCell(cellNum);
            if (cell == null) {
                continue;
            }
            double num = 0;

            CellRangeAddress merged = getRangeIfMerged(cell, mergedRanges);

            if (merged != null) {
                Cell topLeft = sheet.getRow(merged.getFirstRow()).getCell(merged.getFirstColumn());
                newCell(listeners, i, cellNum, formatter.formatCellValue(topLeft), topLeft.getColumnIndex());

            } else {
                switch (cell.getCellType()) {
                case Cell.CELL_TYPE_FORMULA:
                    String cellValue = null;
                    try {
                        CellValue cv = formulaEvaluator.evaluate(cell);
                        cellValue = getCellValue(cv);
                        newCell(listeners, i, cellNum, cellValue, DataListener.NON_MERGED);
                    } catch (RuntimeException e) {
                        // This is thrown if an external link cannot be resolved, so try the cached value
                        log.warn("Cannot resolve externally linked value: " + formatter.formatCellValue(cell));
                        String cachedValue = tryToReadCachedValue(cell);
                        newCell(listeners, i, cellNum, cachedValue, DataListener.NON_MERGED);
                    }
                    break;
                case Cell.CELL_TYPE_NUMERIC:
                    num = cell.getNumericCellValue();
                default:
                    if (num - Math.round(num) != 0) {
                        newCell(listeners, i, cellNum, String.valueOf(num), DataListener.NON_MERGED);
                    } else {
                        newCell(listeners, i, cellNum, formatter.formatCellValue(cell),
                                DataListener.NON_MERGED);
                    }
                }
            }
        }
    }
    finishSheet(listeners);
}

From source file:org.eclipse.emfforms.internal.spreadsheet.core.renderer.table.EMFFormsSpreadsheetTableControlRenderer_ITest.java

License:Open Source License

@Test
public void test() throws DatatypeConfigurationException, DatabindingFailedException, IOException {
    // write data
    @SuppressWarnings("restriction")
    final EMFFormsSpreadsheetExporter viewRenderer = new org.eclipse.emfforms.internal.spreadsheet.core.transfer.EMFFormsSpreadsheetExporterImpl(
            new org.eclipse.emfforms.internal.spreadsheet.core.transfer.EMFFormsSpreadsheetExporterImpl.ViewProvider() {
                @Override/*from w  ww.  jav a2s.  co  m*/
                public VView getViewModel(EObject viewEobject, VViewModelProperties properties) {
                    return getView(DetailEditing.NONE);
                }
            });
    final EObject domainModel = getDomainModel();
    final EObject domainModel2 = getDomainModel();
    final Workbook workbook = viewRenderer.render(Arrays.asList(domainModel, domainModel2), null, null);

    final Sheet sheet = workbook.getSheet("root"); //$NON-NLS-1$
    assertEquals(4, sheet.getLastRowNum()); // the rows 0,1,2 are fix and then 3,4 are added
    assertEquals(22, sheet.getRow(0).getLastCellNum());// there are 22 rows, (21 from the view model + 1 for the id)
    // read data

    final EMFFormsSpreadsheetImporter spreadsheetImport = EMFFormsSpreadsheetImporter.INSTANCE;
    final Collection<EObject> domainModels = spreadsheetImport
            .importSpreadsheet(workbook, TaskPackage.eINSTANCE.getTask()).getImportedEObjects();
    assertEquals(2, domainModels.size());
    for (final EObject model : domainModels) {
        assertTrue(EcoreUtil.equals(model, domainModel));
    }
}

From source file:org.eclipse.emfforms.internal.spreadsheet.core.renderer.table.EMFFormsSpreadsheetTableControlRenderer_ITest.java

License:Open Source License

@Test
public void testWithDialogDetail()
        throws DatatypeConfigurationException, DatabindingFailedException, IOException {
    // write data
    @SuppressWarnings("restriction")
    final EMFFormsSpreadsheetExporter viewRenderer = new org.eclipse.emfforms.internal.spreadsheet.core.transfer.EMFFormsSpreadsheetExporterImpl(
            new org.eclipse.emfforms.internal.spreadsheet.core.transfer.EMFFormsSpreadsheetExporterImpl.ViewProvider() {
                @Override//from   www  .ja va2 s .c o m
                public VView getViewModel(EObject viewEobject, VViewModelProperties properties) {
                    return getView(DetailEditing.WITH_DIALOG);
                }
            });
    final EObject domainModel = getDomainModel();
    final EObject domainModel2 = getDomainModel();
    final Workbook workbook = viewRenderer.render(Arrays.asList(domainModel, domainModel2), null, null);

    final Sheet sheet = workbook.getSheet("root"); //$NON-NLS-1$
    assertEquals(4, sheet.getLastRowNum()); // the rows 0,1,2 are fix and then 3,4 are added
    assertEquals(22, sheet.getRow(0).getLastCellNum());// there are 22 rows
    // read data

    final EMFFormsSpreadsheetImporter spreadsheetImport = EMFFormsSpreadsheetImporter.INSTANCE;
    final Collection<EObject> domainModels = spreadsheetImport
            .importSpreadsheet(workbook, TaskPackage.eINSTANCE.getTask()).getImportedEObjects();

    assertEquals(2, domainModels.size());

    for (final EObject model : domainModels) {
        assertTrue(EcoreUtil.equals(model, domainModel));
    }
}

From source file:org.eclipse.emfforms.internal.spreadsheet.core.transfer.EMFFormsSpreadsheetImporterImpl.java

License:Open Source License

/**
 * Returns a Map from EObject-ID to Sheet-ID to Row-ID.
 *//*from  www  .j  a v  a  2  s.  co  m*/
private Map<String, Map<Integer, Integer>> parseIds(Workbook workbook, SpreadsheetImportResult errorReports) {
    final Map<String, Map<Integer, Integer>> result = new LinkedHashMap<String, Map<Integer, Integer>>();

    for (int sheetId = 0; sheetId < workbook.getNumberOfSheets(); sheetId++) {
        final Sheet sheet = workbook.getSheetAt(sheetId);
        final Row labelRow = sheet.getRow(0);
        if (labelRow == null) {
            errorReports.reportError(Severity.ERROR,
                    MessageFormat.format(
                            LocalizationServiceHelper.getString(getClass(), "ImportError_SheetEmpty"), //$NON-NLS-1$
                            sheet.getSheetName()),
                    ErrorFactory.eINSTANCE.createSheetLocation(workbook.getSheetName(sheetId), 0, 0,
                            "NO CELL")); //$NON-NLS-1$
            continue;
        }
        final Cell idColumnLabelCell = labelRow.getCell(0, Row.CREATE_NULL_AS_BLANK);
        final Comment cellComment = idColumnLabelCell.getCellComment();
        if (cellComment != null && cellComment.getString() != null
                && IGNORE_SHEET.equals(cellComment.getString().getString())) {
            continue;
        }
        final String idColumnLabel = getStringCellValue(idColumnLabelCell);
        if (!EMFFormsIdProvider.ID_COLUMN.equals(idColumnLabel)) {
            /* ID Column is missing. We have to ignore this sheet */
            errorReports.reportError(Severity.ERROR,
                    MessageFormat.format(
                            LocalizationServiceHelper.getString(getClass(), "ImportError_FirstColumnWrong"), //$NON-NLS-1$
                            EMFFormsIdProvider.ID_COLUMN, idColumnLabel),
                    ErrorFactory.eINSTANCE.createSheetLocation(workbook.getSheetName(sheetId), 0, 0,
                            "NO CELL")); //$NON-NLS-1$
            continue;
        }
        for (int rowId = 3; rowId <= sheet.getLastRowNum(); rowId++) {
            final Row row = sheet.getRow(rowId);
            if (row == null) {
                errorReports.reportError(Severity.INFO,
                        LocalizationServiceHelper.getString(getClass(), "ImportError_EmptyRow"), //$NON-NLS-1$
                        ErrorFactory.eINSTANCE.createSheetLocation(workbook.getSheetName(sheetId), 0, rowId,
                                EMFFormsIdProvider.ID_COLUMN));
                continue;
            }
            final String eObjectId = getStringCellValue(row.getCell(0, Row.CREATE_NULL_AS_BLANK));
            if (eObjectId == null || eObjectId.isEmpty()) {
                /* EObject id deleted */
                errorReports.reportError(Severity.ERROR,
                        LocalizationServiceHelper.getString(getClass(), "ImportError_NoEObjectID"), //$NON-NLS-1$
                        ErrorFactory.eINSTANCE.createSheetLocation(workbook.getSheetName(sheetId), 0, rowId,
                                EMFFormsIdProvider.ID_COLUMN));
                continue;
            }
            if (!result.containsKey(eObjectId)) {
                result.put(eObjectId, new LinkedHashMap<Integer, Integer>());
            }
            // each sheetid should only be mapped once to each eobjectid
            if (result.get(eObjectId).containsKey(sheetId)) {
                /* duplicate EObject ID */
                errorReports.reportError(Severity.ERROR,
                        LocalizationServiceHelper.getString(getClass(), "ImportError_DuplicateEObjectID"), //$NON-NLS-1$
                        ErrorFactory.eINSTANCE.createSheetLocation(workbook.getSheetName(sheetId), 0, rowId,
                                EMFFormsIdProvider.ID_COLUMN));
                continue;
            }
            result.get(eObjectId).put(sheetId, rowId);
        }
    }
    return result;
}