Why was HSSFWorkbook.getSSTString(int) deprecated?  I parse spreadsheets that 
are uploaded via a web application and there are times I get spreadsheets that 
look like they have data but when the normal methods of getting data out of the 
cells are used, it does not return any data.  The only way I can get the data 
out of the spreadsheet is to use the getSSTString method.  When I saw it was 
deprecated in 3.0, I was hopeful that the issue was corrected, but I just tried 
it and I am still required to use getSSTString to get the data.

A code snippet form the code I use to get the data from the spreadsheet is as 
follows and I have attached an example spreadsheet that has this issue.  Note 
that if you open it and save it, it will not have the issue anymore.  If you 
are going to try it out, just save it directly from the email.

Thanks for any help.  If more information is needed, I will be happy to provide 
it.

            int rowCnt = sheet.getLastRowNum();
            for (int rowNum = 0; rowNum <= rowCnt; rowNum++)
            {
                boolean isBlankRow = true;
                HSSFRow row = sheet.getRow(rowNum);
                if (row == null)
                {
                    System.out.println("Row " + rowNum + " was NULL.");
                    continue;
                }

                Collection errors = new ArrayList();
                Object voObject = null;
                try
                {
                    voObject = voClass.newInstance();
                } catch (IllegalAccessException ex)
                {
                    ex.printStackTrace();
                    throw new RwtException(ExceptionConstants.GENERAL_EX,
                            RwtException.SYSTEM_EXCEPTION,
                            RwtException.FATAL_ERROR, ex);
                } catch (InstantiationException ex)
                {
                    ex.printStackTrace();
                    throw new RwtException(ExceptionConstants.GENERAL_EX,
                            RwtException.SYSTEM_EXCEPTION,
                            RwtException.FATAL_ERROR, ex);
                }

                int cellCnt = row.getLastCellNum();
                Collection mapColumns = fileMap.getColumns();
                if (hasHeader && rowNum == 0)
                {
                    System.out.println("Validating the header!!!");
                    Collection headerErrors = validateHeader(row, mapColumns,
                            file.getFileName(), rowNum);
                    if (headerErrors.size() > 0)
                    {
                        System.out.println("Found error in header.");
                        throw new InvalidHeaderException(headerErrors);
                    }
                } else
                {
                    Collection cellValues = new ArrayList();
                    for (short cellNum = 0; cellNum < cellCnt; cellNum++)
                    {
                        HSSFCell cell = row.getCell(cellNum);
                        if (cell != null
                                && cell.getCellType() != 
HSSFCell.CELL_TYPE_BLANK)
                        {
                            // Get the value of the cell and approximate its 
type
                            int cellType = cell.getCellType();
                            Object cellValue = null;
                            if (cellType == HSSFCell.CELL_TYPE_NUMERIC)
                            {
                                double cellDoubleValue = cell
                                        .getNumericCellValue();
                                if (HSSFDateUtil.isCellDateFormatted(cell))
                                {
                                    cellValue = new Timestamp(HSSFDateUtil
                                            .getJavaDate(cellDoubleValue)
                                            .getTime());
                                } else
                                {
                                    long cellLongValue = (long) cellDoubleValue;
                                    if (cellLongValue == cellDoubleValue)
                                    {
                                        cellValue = new Long(cellLongValue);
                                    } else
                                    {
                                        cellValue = new Double(cellDoubleValue);
                                    }
                                }
                            } else if (cellType == HSSFCell.CELL_TYPE_STRING)
                            {
                                // WR-1579 begin
                                HSSFRichTextString richText = 
cell.getRichStringCellValue();
                                cellValue = richText.getString();
                                // WR-1579 end
                            }

                            foundRowData = true;
                            cellValues.add(cellValue);
                        } else
                        {
                            cellValues.add("");
                        }
                    }

                    /* If no valid cell has been found
                     * to this point in the spreadsheet
                     * try to get a value from the Shared
                     * String Table at the row's position.
                     * 
                     * See page 389 in the 
                     * Excel 97 Developer's Kit
                     */
                    if (!foundRowData)
                    {
                        System.out
                                .println("No cell data has been found for row: "
                                        + rowNum);

                        try
                        {
                            /* If and SST value is found then the cellValues
                             * Collection must be cleared to remove any empty 
                             * Strings added in the cell loop, above.
                             */
                            System.out
                                    .println("Looking for cell data from Shared 
String Table: "
                                            + sstPosition); // WR-0964          
                  
                            String sstString = workbook
                                    .getSSTString(sstPosition);
                            cellValues = new ArrayList();
                            cellValues.add(sstString);
                            System.out
                                    .println("Set cell data from Shared String 
Table: "
                                            + sstPosition); // WR-0964
                        } catch (Exception e)
                        {
                            System.out
                                    .println("Failed to get Shared String Table 
String: "
                                            + sstPosition); // WR-0964
                        }
                        sstPosition++;
                    }


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to