Version information:
PHPExcel – 1.7.8
linux – Linux version 2.6.18-274.12.1.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-51))
PHP Version – 5.3.17
I have a sales reporting template that I use to create a weekly report. Everything works perfectly, except for the output file size.
The input template is only 249kb in size, and yet the output file ends up being over 4mb in size.
There are a total of 97 cells that have any data put added into them. When I insert the data manually, the size stays correct.
Original Template size – 254,464
Manual Entry Output size – 254,464
PHPExcel Output size – 4,230,656
I based my code off of the 30template.php example.
Any thoughts on what could be causing this is appreciated!
If any other information is needed I’ll respond with what I can.
If the worksheet contains the data that you expect, then you really shouldn’t worry about this. 4MB isn’t particularly large for a file.
PHPExcel is not a file editor: it doesn’t simply add a few extra cells into the original file that might simply add a few bytes to the resultant size. It loads the file, converting its content to a PHPExcel object; you modify that PHPExcel object; and when you save, it writes a new file from the content of that PHPExcel object. Excel itself has a lot of different options for the way it stores the spreadsheet data, and the resources to optimise to store them extremely efficiently when it saves. PHPExcel stores in a generic manner, without the overhead of determining how best to optimise the resultant file to a minimal size. PHPExcel may, for example, save additional default styles that aren’t used in the workbook, whereas Excel itself may discard these. You don’t mention which format you’re using: .xlsx or .xls… the former is zip compressed; but the zip compression method used by ZipArchive may not match the compression method used by Excel.
So there’s a whole host of factors that come into play that affect the size of a saved file: what’s generally more important is that the content is correct.