Come get più di 255 colonne in un foglio Excel utilizzando Apache POI 3.6

Sto creando un calendario in excel. La colonna 1 è il 01.01.2010 (dd.MM.yyyy), la colonna 2 è il 02.01.2010 e così via.

Questo è il mio codice:

int day_cell = 0; for(int i = 0; i < days.size(); i++) { Date day = days.get(i); HSSFCell cell = row.createCell(day_cell++); cell.setCellValue(day.toString()); } 

Quando arrivo alla colonna 256 POI lancia questa exception:

 java.lang.IllegalArgumentException: Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') at org.apache.poi.hssf.usermodel.HSSFCell.checkBounds(HSSFCell.java:926) at org.apache.poi.hssf.usermodel.HSSFCell.<init>(HSSFCell.java:162) at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:141) at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:119) 

Ho trovato questo bug-report che suggerisce che fosse stato risolto nella release 3.6. Noi stavamo utilizzando 3.5 ma cambiando a 3.6 non sembra fare alcun bene. Qualcuno ha qualche suggerimento?

https://issues.apache.org/bugzilla/show_bug.cgi?id=46806

Modifica: sembra che il bug-issue riguardasse formule.

Le lastre excel prima del 2007 hanno una limitazione di 256 colonne. Questi fogli generano anche l'estensione ".xls". Excel 2007 e in poi possono ospitare 16 colonne, si basano su un formato XML e generano un formato ".xlsx". Il model di object POI per i fogli precedenti al 2007 è org.apache.poi.hssf.usermodel mentre il model di oggetti per i fogli di org.apache.poi.xssf.usermodel 2007 è org.apache.poi.xssf.usermodel Il pacchetto org.apache.poi.ss.usermodel fornisce un un'interface uniforms che copre sia i templates degli oggetti. Per creare più di 256 colonne, dovrai utilizzare le classi all'interno del pacchetto org.apache.poi.xssf.usermodel o all'interno di org.apache.poi.ss.usermodel .

Il tuo problema potrebbe essere con Excel, non con la tua API.

Il numero massimo di colonne in un foglio di calcolo Excel 2007 è 256 .

L'avevo capito. Ho dovuto passare dall'org.apache.poi.hssf.usermodel all'org.apache.poi.ss.usermodel

Ciò consente di utilizzare 16 colonne o qualcosa del genere.

Puoi considerare di passare da un ritratto a un paesaggio (in altre parole, trasporre i dati) in modo da poter utilizzare 65k righe per giorni dell'anno. Questo è esattamente quello che ho fatto con un rapporto che richiede un gran numero di colonne e un piccolo numero di righe.

In alternativa, è ansible dividere l'anno in periodi secondari di 6 mesi, ognuno nel proprio foglio.

Queste sono entrambe le soluzioni stopgap, ma potrebbero fornire una soluzione "sufficiente", a seconda dei requisiti che hai.

Questo perché Excel dispone di colonne di numero limitato Vedi questo: http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx