Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHPExcel и Файл не найден
Форумы портала PHP.SU » » Если скрипт не работает » PHPExcel и Файл не найден

Страниц (1): [1]
 

1. Настя Гуглова - 19 Августа, 2013 - 09:44:59 - перейти к сообщению
Доброе утро всем!
Я использую библиотку PHPExcel и yiiframework.
Задача — экспортировать таблицу в Ексель. Я всё настроила, и библиотека отлично справляется со своими задачами. На Денвере. А вот на сервере, при нажатии на экспорт бразуер выдает ошибку "Файл не найден"

PHP:
скопировать код в буфер обмена
  1. $data = $array['DataProvider'];
  2.  
  3.       $objPHPExcel = new PHPExcel();
  4.  
  5.         // Set document properties
  6.         $objPHPExcel->getProperties()->setCreator("K'iin Balam")
  7.              ->setLastModifiedBy("K'iin Balam")
  8.              ->setTitle("YiiExcel Test Document")
  9.              ->setSubject("YiiExcel Test Document")
  10.              ->setDescription("Test document for YiiExcel, generated using PHP classes.")
  11.              ->setKeywords("office PHPExcel php YiiExcel UPNFM")
  12.              ->setCategory("Test result file");        
  13.        
  14.         // Add some data
  15.                
  16.                 $objPHPExcel->setActiveSheetIndex(0)
  17.                     ->setCellValue('A1', 'Дата')
  18.                         ->setCellValue('B1', 'Логин')
  19.             ->setCellValue('C1', 'Организация')
  20.                         ->setCellValue('D1', '№ заказа')
  21.                         ->setCellValue('E1', 'Плательщик')
  22.                         ->setCellValue('F1', 'Сумма')
  23.                         ->setCellValue('G1', 'Тип')
  24.                         ->setCellValue('H1', 'Вариант оплаты')
  25.                         ->setCellValue('I1', 'Счет')
  26.                         ->setCellValue('J1', 'Дата оплаты')
  27.                         ->setCellValue('K1', 'Статус-балланс');
  28.                
  29.                
  30.                 for ($i = 0; $i < count($data); $i++)
  31.                 {
  32.                   $objPHPExcel->setActiveSheetIndex(0)
  33.                     ->setCellValue('A'.($i+2), $data[$i]->date)
  34.                         ->setCellValue('B'.($i+2), $data[$i]->user->username)
  35.             ->setCellValue('C'.($i+2), $data[$i]->user->company)
  36.                         ->setCellValue('D'.($i+2), $data[$i]->id)
  37.                         ->setCellValue('E'.($i+2), $data[$i]->payer)
  38.                         ->setCellValue('F'.($i+2), $data[$i]->value)
  39.                         ->setCellValue('G'.($i+2), $data[$i]->type)
  40.                         ->setCellValue('H'.($i+2), $data[$i]->variant_add)
  41.                         ->setCellValue('I'.($i+2), $data[$i]->invoice)
  42.                         ->setCellValue('J'.($i+2), $data[$i]->date_realy)
  43.                         ->setCellValue('K'.($i+2), $data[$i]->status_ballanse);
  44.                 }
  45.        
  46.        
  47.         // Miscellaneous glyphs, UTF-8
  48.         /*$objPHPExcel->setActiveSheetIndex(0)
  49.             ->setCellValue('A4', 'Miscellaneous glyphs')
  50.             ->setCellValue('A5', 'йаищвкофылпьядцьз');*/
  51.        
  52.         // Rename worksheet
  53.         $objPHPExcel->getActiveSheet()->setTitle('YiiExcel');
  54.        
  55.         // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  56.         $objPHPExcel->setActiveSheetIndex(0);
  57.        
  58.         // Save a xls file
  59.         $filename = 'Glyanec-fin';
  60.         header('Content-Type: application/vnd.ms-excel');
  61.  
  62.         header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
  63.                
  64.         header('Cache-Control: max-age=0');
  65.         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  66.  
  67.         $objWriter->save('php://output');
  68.                 //$objWriter->save('test.xls');
  69.         unset($this->objWriter);
  70.         unset($this->objWorksheet);
  71.         unset($this->objReader);
  72.         unset($this->objPHPExcel);
  73.         exit();


Все требуемые расширения на сервере стоят. Почему не работает — я просто ума не приложу. Буду благодарна за советы.
2. nikalas9 - 17 Сентября, 2013 - 10:13:33 - перейти к сообщению
Получилось найти решение ?
3. nikalas9 - 18 Сентября, 2013 - 15:01:03 - перейти к сообщению
В общем нашел ответ на других форумах. все дело в строке

в файле /Classes/PHPExcel/Shared/File.ph p

которая отдает путь к вашей папке tmp, но к которой у выполняемого скрипта нет прав доступа. и вот происходит такой глюк

вам нужно создать папку на сайте с 777. и в этом месте отдавать к ней путь.
а вобще можно все закоментить , и тоже будет работать)

 

Powered by ExBB FM 1.0 RC1