@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(); 
    
};
  • Вопрос задан
  • 97 просмотров
Решения вопроса 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
Софт для автоматизации
Рекомендую использовать формат csv, у него крайне простая структура и он отлично читается экселем, из под коробки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
от 300 000 до 500 000 ₽
08 мая 2024, в 13:52
1500 руб./за проект
08 мая 2024, в 13:41
2000 руб./за проект