You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@poi.apache.org by EA...@helvetiaprevision.com on 2006/07/26 15:21:42 UTC
trouble with "Too many different cell formats" issue
Hello,
While generating a spreadsheet with some sheets (about 10) and many data
inserted into it, I got the following error when the created workbook was
opened with MS Excel 2002: "Too many different cell formats".
This is a well-known issue reported by microsoft saying that workbooks
with more than 4000 different cell formats (or combinations as Microsoft
calles them) can not be handled and therefore, formatting is disabled for
the remaining cells. Everything ok up to the this point.
I generate lots of data that are included in the workbook, more than 4000
data cells. However, I do not apply more than 20 different styles.
According to Microsoft, two cells with the same format do not account as
two different formats. Nevertheless, excel complains. Trying to find out a
solution, first I set the same style to all the cells. When more than 4000
cells were created I came accross to the same error. Style stands for all
font formatting (for example: typeface, font size, italic, bold, and
underline), borders (for example: location, weight, and color), cell
patterns, number formatting, alignment, and cell protection.
First try did not work, so afterwards I tried the following:
I generated styles with the instruction:
HSSFWorkbook wb = new HSSFWorkbook();
.....
HSSFCellStyle style = wb.createCellStyle();
but, I did not set the style as it should be done:
# cell.setCellStyle(style); // note that it is commented out. cell is
an instance of HSSFCell class
Excell still complained..... the same error.
Finally, I commented out the line where style is created from the workbook
reference. In this case, Excel did not complain and all the cells were
unformatted.
I guess that HSSF library creates two different styles when the following
code is executed:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("0");
HSSFRow row = sheet.createRow(0);
HSSFCell cell1 = row.createCell(0);
// Style type 1 is created
HSSFCellStyle style1 = wb.createCellStyle();
cell1.setCellStyle(style1);
cell1.setCellValue("first cell data");
HSSFCell cell2 = row.createCell(1);
// Style type 2 is created
HSSFCellStyle style2 = wb.createCellStyle();
cell2.setCellStyle(style2);
cell2.setCellValue("second cell data");
The right behavior should be that only one style is created eventhough it
is set in two different cells. I think that HSSF creates a style every
time createCellStyle() method is called from the workbook reference.
Is there any way to fix it? Maybe I am not rigth in my thinking.
Thanks in advance
Eguzki Astiz Lezaun
Helvetia Prevision
Software engineer
Re: trouble with "Too many different cell formats" issue
Posted by av...@itellix.com.
Eguzki,
See this:
http://jakarta.apache.org/poi/faq.html#faq-N100C3
Regards
-
Avik
Quoting EAstiz@helvetiaprevision.com:
> Hello,
>
> While generating a spreadsheet with some sheets (about 10) and many data
> inserted into it, I got the following error when the created workbook was
> opened with MS Excel 2002: "Too many different cell formats".
>
> This is a well-known issue reported by microsoft saying that workbooks
> with more than 4000 different cell formats (or combinations as Microsoft
> calles them) can not be handled and therefore, formatting is disabled for
> the remaining cells. Everything ok up to the this point.
>
> I generate lots of data that are included in the workbook, more than 4000
> data cells. However, I do not apply more than 20 different styles.
> According to Microsoft, two cells with the same format do not account as
> two different formats. Nevertheless, excel complains. Trying to find out a
> solution, first I set the same style to all the cells. When more than 4000
> cells were created I came accross to the same error. Style stands for all
> font formatting (for example: typeface, font size, italic, bold, and
> underline), borders (for example: location, weight, and color), cell
> patterns, number formatting, alignment, and cell protection.
>
> First try did not work, so afterwards I tried the following:
> I generated styles with the instruction:
>
> HSSFWorkbook wb = new HSSFWorkbook();
> .....
> HSSFCellStyle style = wb.createCellStyle();
>
> but, I did not set the style as it should be done:
>
> # cell.setCellStyle(style); // note that it is commented out. cell is
> an instance of HSSFCell class
>
> Excell still complained..... the same error.
>
> Finally, I commented out the line where style is created from the workbook
> reference. In this case, Excel did not complain and all the cells were
> unformatted.
>
> I guess that HSSF library creates two different styles when the following
> code is executed:
>
> HSSFWorkbook wb = new HSSFWorkbook();
> HSSFSheet sheet = wb.createSheet("0");
> HSSFRow row = sheet.createRow(0);
> HSSFCell cell1 = row.createCell(0);
> // Style type 1 is created
> HSSFCellStyle style1 = wb.createCellStyle();
> cell1.setCellStyle(style1);
> cell1.setCellValue("first cell data");
>
> HSSFCell cell2 = row.createCell(1);
> // Style type 2 is created
> HSSFCellStyle style2 = wb.createCellStyle();
> cell2.setCellStyle(style2);
> cell2.setCellValue("second cell data");
>
> The right behavior should be that only one style is created eventhough it
> is set in two different cells. I think that HSSF creates a style every
> time createCellStyle() method is called from the workbook reference.
>
> Is there any way to fix it? Maybe I am not rigth in my thinking.
>
> Thanks in advance
>
> Eguzki Astiz Lezaun
> Helvetia Prevision
> Software engineer
>
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-user-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta Poi Project: http://jakarta.apache.org/poi/