Ошибка исключения phpexcel при экспорте данных в книгу Excel

Я пытаюсь экспортировать данные в Excel с помощью phpexcel, но он возвращает эту ошибку, но указанный файл Excel находится в том месте, где он выделен. Дело в том, что файл excel находится в этом месте, но как только он возвращает эту ошибку, файл не находится там, где его можно найти, что я сделал неправильно?

Ошибка:

Неустранимая ошибка: неперехваченное исключение "Исключение" с сообщением "Файл zip: //workbooks/NDQA201303001/NDQA201303001.xlsx#xl/media/nqcl1.png не существует" в C: \ server \ htdocs \ NQCL \ application \ third_party \ PHPExcel \ Writer \ Excel2007 \ ContentTypes.php: 216

Код веб-скрипта, относящийся к процессу

  $objReader = PHPExcel_IOFactory::createReader('Excel2007');           

        $objPHPExcel = $objReader->load("workbooks/" . $labref . "/" . $labref . ".xlsx");
        $objPHPExcel->getActiveSheet(0)
               ->setCellValue('E22', 'Tabs/Capsule Weight')

                ->setCellValue('E23', 'No.')
                ->setCellValue('F23', 'Tabs/Capsule Weights (mg)');
$dir = "workbooks";

        if (is_dir($dir)) {

            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
            $objWriter->save("workbooks/" . $labref . "/" . $labref . ".xlsx");


            echo 'Data exported';
        } else {
            echo 'Dir does not exist';
        }

person alphy    schedule 18.04.2013    source источник
comment
Он не жалуется, что не может найти файл Excel: он жалуется, что не может найти изображение, встроенное в этот файл Excel ... Я предполагаю, что эта ошибка возникает во время загрузки?   -  person Mark Baker    schedule 18.04.2013
comment
Меня смущает ход вашей процедуры. Вы проверяете, существует ли каталог перед сохранением файла, но предполагаете, что тот же файл уже существует, когда вы его читаете ?!   -  person Phill Sparks    schedule 18.04.2013


Ответы (2)


Если вы используете Codeigntier для экспорта данных из запроса в Excel, это очень просто. для этого вам не нужен php excel. все ресурсы доступны в Codeigniter.

Взгляните на этот мой ответ, он может быть вам полезен. Он будет экспортировать данные в формате csv, который вы можете изменить с помощью xlsx.

Отчеты в Codeigniter

person Muhammad Raheel    schedule 18.04.2013
comment
Спасибо, Рахил Шан, но я экспортирую из php значения $ _POST для полей ввода в формах html. - person alphy; 18.04.2013

Используйте приведенный ниже код и измените его в соответствии с вашими требованиями. Это нормально работает.

<?php
include("config.php");
$result = mysql_query("SELECT * FROM recruitment" );

function xlsBOF() { 
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);  
return; 
}
function xlsEOF() { 
echo pack("ss", 0x0A, 0x00); 
return; 
}
function xlsWriteNumber($Row, $Col, $Value) { 
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0); 
echo pack("d", $Value); 
return; 
} 
function xlsWriteLabel($Row, $Col, $Value ) { 
$L = strlen($Value); 
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L); 
echo $Value; 
return; 
}
function xlsWriteString( $Row , $Col , $Value )
{
$L = strlen( $Value );
echo pack( "ssssss" , 0x204 , 8 + $L , $Row , $Col , 0x0 , $L );
echo $Value;
return;
}
// Send Header
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=export.xls ");
header("Content-Transfer-Encoding: binary ");

// XLS Data Cell
xlsBOF();
xlsWriteLabel(1,0,"Application No");
xlsWriteLabel(1,1,"Date of Application");


$xlsRow = 2;

while($row = mysql_fetch_array($result))
{
$applicationno=$row['applicationno'];
$dateofapplication=$row['dateofapplication'];

//echo $salarydetails;
xlsWriteNumber($xlsRow,0,"$applicationno");
xlsWriteNumber($xlsRow,1,"$dateofapplication");

$xlsRow++;

}

xlsEOF();
exit();

//}
?>
person Atanu    schedule 18.04.2013
comment
-1 - Я сомневаюсь, что этот код делает то, что хочет OP ... он читает файл xlsx, изменяет его и сохраняет. Ваш код записывает только базовый файл xls - другой формат файла, без чтения, без стилей или функций Excel (например, изображение, вызывающее проблему) - person Mark Baker; 18.04.2013
comment
Моя система работает абсолютно нормально, когда я экспортирую. Она точно читает с форматированием. То же, что OP хочет экспортировать. - person Atanu; 18.04.2013
comment
Вы вообще не показали никакого кода для чтения исходного файла электронной таблицы OP; вы пишете файл в формате, отличном от формата исходного плаката (вы пишете файл xls, OP записывает файл xlsx); ваш код не учитывает тот факт, что файл OP содержит изображения .... ваша система не делает то, что хочет OP - person Mark Baker; 18.04.2013
comment
Привет, Марк, я аплодирую твоим глубоким познаниям в phpExcel, кажется, у меня возникают проблемы, заставьте меня понять это. Это то, что я пытаюсь сделать. У меня есть рабочая тетрадь, в ней может быть много листов. Данные экспортируются со страницы html (несколько входов). Я хочу, чтобы, когда я нажимаю кнопку экспорта в первый раз, данные экспортируются на лист с индексом 0, когда я снова нажимаю экспорт на той же странице, создается новый лист и данные экспортируются на лист с индексом 1 , в следующий раз, когда лист с индексом 2 и так далее, я попробовал метод creatSheet, но мой файл все равно пропал. Спасибо - person alphy; 18.04.2013
comment
@alphy - Начните с сужения проблемы с помощью некоторой базовой отладки: вы получаете ошибку во время загрузки файла, во время вызовов для установки значений ячеек или во время сохранения? - person Mark Baker; 18.04.2013