PHPExcel Предупреждение / Ошибка при открытии документа - PullRequest
3 голосов
/ 30 июля 2011

Я создал документ Excel, используя библиотеку PHPExcel. Мой документ открывается и выглядит хорошо как в Numbers (Mac) и Office 2007 (Windows). Я сохраняю свой файл как файл .xlsx.

Когда я открываю файл, хотя он отображается правильно, он выдает следующие ошибки / предупреждения.

В Numbers выдает предупреждение " Защита паролем на листах не поддерживается и была удалена "

В Office 2007 выдается сообщение об ошибке " Excel обнаружил нечитаемый контент в 'filename.xlsx'. Хотите восстановить содержимое этой книги? Если вы доверяете источнику этой книги, нажмите" Да ". «Когда я нажимаю« да », все отображается нормально, и появляется сообщение« Удаленные записи: объединить ячейки из /sl/worksheets/sheet1.xml part ».

Следует отметить, что я не добавил пароль в свой файл. У меня также есть только одна рабочая тетрадь. Кто-нибудь знает, как я могу избавиться от них или что может быть их причиной?

Ответы [ 2 ]

7 голосов
/ 14 сентября 2011

У меня была такая же проблема, и я решил просто поставить

exit();

только после команды $objWriter->save('php://output');.

Например.

// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="industrializzazione_RTW_'.$rows[0]['stagione'].'.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output'); 
exit();
1 голос
/ 13 сентября 2011

Я столкнулся с чем-то похожим, когда использовал CakePHP для создания электронной таблицы с объединениями.Он отлично работает для Excel 2003, но не в формате Excel 2007.Если я создаю электронную таблицу 2007 года, используя:

$objPHPExcel->getActiveSheet()->mergeCells('C30:E30');

, электронная таблица загружается нормально.Однако, используя переменную любым способом, таким как эти варианты:

$mergestr = '\'C'.(30+$i).':E'.(30+$i).'\'';
$objPHPExcel->getActiveSheet()->mergeCells($mergestr);
$objPHPExcel->getActiveSheet()->mergeCells(eval("return \$$mergestr;"));
$objPHPExcel->getActiveSheet()->mergeCells('\'C'.(30+$i).':E'.(30+$i).'\'');
$objPHPExcel->getActiveSheet()->mergeCells('C'.(30+$i).':E'.(30+$i));

Я получаю ту же ошибку, что и вы.Я не уверен, есть ли способ экранировать переменную так, как PHPExcel понравится писателю Excel2007.Writer Excel5 отлично работает с последним примером выше.Надеюсь, это кому-нибудь поможет.

...