@Kalyvan

Почему возникает ошибка Невозможно создать класс «PHPExel_Writer_Excel2016»?

Excel2016 года установлен,что не так?
609989d42efd4634815779.png
60998a2a9e6de823754776.png
Это если я меняю на Excel5

include("Classes/PHPExcel.php");

        if($_GET['do']==1){
       $mysqli = mysqli_connect('localhost', 'root', '', 'registration');
         if ($mysqli->connect_errno) {
        printf("Соединение не удалось: %s\n", $mysqli->connect_error);
        exit();
    }
      $sql= "SELECT * FROM tariff";
      if ($result = $mysqli->query($sql)) {
     $l=array();
     while ($r = $result->fetch_assoc()) {
       $l[] = $r;
 
    }

 //------------------------------------
    //1 Часть: запись в файл
 
    //Создание объекта класса библиотеки
    $objPHPExcel = new PHPExcel();
 
    //Указываем страницу, с которой работаем (листы Excel)
    $objPHPExcel->setActiveSheetIndex(0);
 
    //Получаем страницу, с которой будем работать
    $active_sheet = $objPHPExcel->getActiveSheet();
 
    //Создание новой страницы(пример)
    //$objPHPExcel->createSheet();
 
    //Ориентация и размер страницы
    // $active_sheet->getPageSetup()
        // ->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); // портретная ориентация
    $active_sheet->getPageSetup()
        ->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); // Ориентация страницы
    $active_sheet->getPageSetup()
        ->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); // размер страницы формат А4
        
    //Имя страницы Excel
    $active_sheet->setTitle("Заявки");
        
    //Ширина стобцов (указываем букву столбца и ширину в пикселях)
    $active_sheet->getColumnDimension('A')->setWidth(20);
    $active_sheet->getColumnDimension('B')->setWidth(20);
    $active_sheet->getColumnDimension('C')->setWidth(50);
 
    //Объединение ячеек (указываем диапазон объединения ячеек)
    $active_sheet->mergeCells('A1:C1');    
 
    //Высота строки (также как и ширина столбцов указывается высота строки в пикселях)
    $active_sheet->getRowDimension('1')->setRowHeight(30);
 
    //Вставить данные(примеры)
    //Нумерация строк начинается с 1, координаты A1 - 0,1
    // $active_sheet->setCellValueByColumnAndRow(0, 1, 'Сегодня '.date('d-m-Y'));
    $active_sheet->setCellValue('A3', 'id_tariff');
    $active_sheet->setCellValue('B3', 'tariff');
    $active_sheet->setCellValue('C3', 'summonth');
 
    //Вставка данных из выборки
    $start = 4;
    $i = 0;
    foreach($l as $row_l){
        $next = $start + $i;
        
        $active_sheet->setCellValueByColumnAndRow(0, $next, $row_l['id_tariff']);
        $active_sheet->setCellValueByColumnAndRow(1, $next, $row_l['tariff']);
        $active_sheet->setCellValueByColumnAndRow(2, $next, $row_l['summonth']);
        
        $i++;
    };
    //Сохраняем файл с помощью PHPExcel_IOFactory и указываем тип Excel
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2016');
    
    //Отправляем заголовки с типом контекста и именем файла
    header('Content-Type:application/vnd.ms-excel');
    header('Content-Disposition:attachment;filename="simple.xlsx"');
 
    ob_end_clean(); 
        
    //Отправляем файл
    $objWriter->save('php://output');
    
    /* удаление выборки */
    $result->free();
}
 
    /* закрытие соединения */
    $mysqli->close(); 
    
};
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
dyuriev
@dyuriev
A posteriori
PHPExcel/README.md:
Office Open XML (.xlsx) Excel 2007 and above


Пробуйте Excel5 или Excel2007 вместо Excel2016
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
nefone
@nefone
Junior PHP разработчик
что не так?

Невозможно создать класс "PHPExel_Writer_Excel2016".

Попробуйте строку:
//Сохраняем файл с помощью PHPExcel_IOFactory и указываем тип Excel
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2016');

Заменить на:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
Рекомендую использовать формат csv, у него крайне простая структура и он отлично читается экселем, из под коробки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы