2015-10-26 3 views
3

Я создаю файл xlsx с использованием phpexcel. У меня есть много формул в файле. при загрузке файла некоторые ячейки формулы (не все) отображаются пустым, пока я не нажму кнопку «Включить редактирование».PHP Excel Дает пустой вывод для ячейки формулы до тех пор, пока не будет нажата Редактирование.

Я использую следующий код:

$objPHPExcel = new PHPExcel(); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="'.$xlsName.'"'); 
header('Cache-Control: max-age=0'); 
$objWriter->save('php://output'); 

Проблема здесь возникает с пользователями, которые используют предыдущие версии Office, которые не имеют возможность редактирования включить. Для них эти ячейки отображаются пустыми.

+0

По крайней мере, обеспечить еще некоторые детали ..... если некоторые формулы клетки являются пустыми, а затем дать мне некоторое представление о этих формулах клетки ...... –

+1

Хотя вы не должны использовать 'Excel2007' Писатель и отправляющие заголовки сообщают обозревателю, что файл является 'application/vnd.ms-excel'. Это заголовок для файла .xls, который создается с помощью 'Excel5' Writer. Создатель 'Excel2007' генерирует файлы .xlsx, которые имеют тип содержимого' application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' –

+0

Я пробовал использовать файл application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. Затем я изменил его на это, потому что получил его из http://stackoverflow.com/questions/8566196/phpexcel-to-download link – Simone

ответ

2

Я столкнулся с этим ответом в другом месте. Если кто-то еще ищет ответы.

$spreadsheet = new \PHPExcel(); 
$writer = new \PHPExcel_Writer_Excel2007($spreadsheet); 

//Do things with the $spreadsheet 

//This is the solution, do it before saving 
$writer->setPreCalculateFormulas(); 
$writer->save($saving_filepath); 
+0

Это сработало для меня! – Klompenrunner

Смежные вопросы