It is necessary to use UTF-8 encoding for all texts in PhpSpreadsheet.
If the script uses different encoding then you can convert those texts
with PHP's iconv()
or mb_convert_encoding()
functions.
PhpSpreadsheet holds an "in memory" representation of a spreadsheet, so
it is susceptible to PHP's memory limitations. The memory made available
to PHP can be increased by editing the value of the memory_limit
directive in your php.ini
file, or by usingini_set('memory_limit', '128M')
within your code.
Some Readers and Writers are faster than others, and they also use
differing amounts of memory.
When you make use of any of the worksheet protection features (e.g. cell
range protection, prohibiting deleting rows, ...), make sure you enable
worksheet security. This can for example be done like this:
$spreadsheet->getActiveSheet()->getProtection()->setSheet(true);
Not all features of PhpSpreadsheet are implemented in all of the Reader
/ Writer classes. This is mostly due to underlying libraries not
supporting a specific feature or not having implemented a specific
feature.
For example autofilter is not implemented in PEAR
Spreadsheet_Excel_writer, which is the base of our Xls writer.
We are slowly building up a list of features, together with the
different readers and writers that support them, in the features cross
reference.
This is normal behaviour of the compatibility pack, Xlsx
displays this
correctly. Use \PhpOffice\PhpSpreadsheet\Writer\Xls
if you really need
calculated values, or force recalculation in Excel2003.
Trying to set column width, I experience one problem. When I open the
file in Excel, the actual width is 0.71 less than it should be.
The short answer is that PhpSpreadsheet uses a measure where padding is
included. See how to set a column's width
for more details.