I'm using excel 2007 and POI-3.9. When the number of tables in a sheet is greater than 6, the XSSFSheet.getTables() method fails to get all the tables, the result of expression getTables().size() equals zero. I've tried with POI-3.10beta2, It failed, too.
Can you provide a sample file and test code which shows the problem? Preferably as unit test?
Created attachment 31016 [details] workbook with sheet on which getTables() doesn't work
(In reply to Dominik Stadler from comment #1) > Can you provide a sample file and test code which shows the problem? > Preferably as unit test? I tried it again, and found that: 1). getTables() works when no table cells are commented; 2). getTables() works when some table cell is commented and the number of tables is less than 7, it fails when the number of tables is no less than 7. The test class: public class TablesTest { public static void main(String[] args) throws InvalidFormatException, IOException { String workbook = "workbook.xlsx"; OPCPackage pkg = OPCPackage.open(new File(workbook)); XSSFWorkbook wb = new XSSFWorkbook(pkg); XSSFSheet sheet = wb.getSheetAt(0); System.out.println(sheet.getTables().size()); } }
This is fixed as part of r1546385, it was a simple coding error when handling comments and tables in XSSF, a loop was left upon the first comment table, disregarding all subsequent normal tables, thus leading to this problem. In fact it was kind of unpredictable, as I saw 1 table before putting the fix in place.