Генерация прайс-листа в формате Excel при помощи PHP. Phpexcel


Содержание материала:

phpexcel: писать данные в Excel с помощью PHP и читать из Excel

Задача писать данные в Excel с помощью PHP и читать из Excel

Как сказал Гагарин — «Поехали!»

//Скачать библиотеку — http://phpexcel.codeplex.com/
//Нашел русскую документацию — http://www.cyberforum.ru/php-beginners/thread1074684.html
//Подключаем скачаную библиотеку
include(«Classes/PHPExcel.php»);

if($_GET[‘do’]==1) <
//Запрос и выборка данных из базы
//В моем примере я подключаюсь к базе MS SQL
//В Вашем примере вы указываете свое подключение MySQL\MS SQL\Postgree.

$sql = «select TOP 5 > $result = sqlsrv_query( $iconn, $sql );

while($r = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC)) <
//Результат выборки данных в массиве $l
$l[] = $r;
>;

//Создание объекта класса библиотеки
$objPHPExcel = new PHPExcel();

//Указываем страницу, с которой работаем
$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);

//Имя страницы
$active_sheet->setTitle(«Данные из docs»);

//Ширина стобцов
$active_sheet->getColumnDimension(‘A’)->setWidth(8);
$active_sheet->getColumnDimension(‘B’)->setWidth(10);
$active_sheet->getColumnDimension(‘C’)->setWidth(90);

//Объединение ячеек
$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’);
$active_sheet->setCellValue(‘B3’, ‘name’);
$active_sheet->setCellValue(‘C3’, ‘info’);

//Вставка данных из выборки
$start = 4;
$i = 0;
foreach($l as $row_l) <
$next = $start + $i;

$active_sheet->setCellValueByColumnAndRow(0, $next, $row_l[‘id’]);
$active_sheet->setCellValueByColumnAndRow(1, $next, $row_l[‘name’]);
$active_sheet->setCellValueByColumnAndRow(2, $next, $row_l[‘info’]);

//Отправляем заголовки с типом контекста и именем файла
header(«Content-Type:application/vnd.ms-excel»);
header(«Content-Disposition:attachment;filename=’simple.xlsx'»);

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

//Отправляем файл
$objWriter->save(‘php://output’);
>;

if($_GET[‘do’]==2) <
//————————————
//2 Часть: чтение файла
//Файл лежит в директории веб-сервера!
$objPHPExcel = PHPExcel_IOFactory::load(«simple.xlsx»);

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
<
//Имя таблицы
$Title = $worksheet->getTitle();
//Последняя используемая строка
$lastRow = $worksheet->getHighestRow();
//Последний используемый столбец
$lastColumn = $worksheet->getHighestColumn();
//Последний используемый индекс столбца
$lastColumnIndex = PHPExcel_Cell::columnIndexFromString($lastColumn);

echo $Title.’

‘;
for ($row = 1; $row getCellByColumnAndRow($col, $row)->getValue();
echo ‘

‘;
>;
echo ‘

‘;
>;
echo ‘

‘.$val.’

‘;
>;
>;

На этом — все, видео выложу на своем канале в YouTube

Генерация прайс-листа в формате Excel при помощи PHP. Phpexcel

Задача писать данные в Excel с помощью PHP и читать из Excel

Выбор пал на библиотеку phpexcel

Как сказал Гагарин — «Поехали!»

//Скачать библиотеку — http://phpexcel.codeplex.com/
//Нашел русскую документацию — http://www.cyberforum.ru/php-beginners/thread1074684.html
//Подключаем скачаную библиотеку
include(«Classes/PHPExcel.php»);

if($_GET[‘do’]==1) <
//Запрос и выборка данных из базы
//В моем примере я подключаюсь к базе MS SQL
//В Вашем примере вы указываете свое подключение MySQL\MS SQL\Postgree…

$sql = «select TOP 5 > $result = sqlsrv_query( $iconn, $sql );

while($r = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC)) <
//Результат выборки данных в массиве $l
$l[] = $r;
>;

//Создание объекта класса библиотеки
$objPHPExcel = new PHPExcel();

//Указываем страницу, с которой работаем
$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);

//Имя страницы
$active_sheet->setTitle(«Данные из docs»);

//Ширина стобцов
$active_sheet->getColumnDimension(‘A’)->setWidth(8);
$active_sheet->getColumnDimension(‘B’)->setWidth(10);
$active_sheet->getColumnDimension(‘C’)->setWidth(90);

//Объединение ячеек
$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’);
$active_sheet->setCellValue(‘B3’, ‘name’);
$active_sheet->setCellValue(‘C3’, ‘info’);

//Вставка данных из выборки
$start = 4;
$i = 0;
foreach($l as $row_l) <
$next = $start + $i;

$active_sheet->setCellValueByColumnAndRow(0, $next, $row_l[‘id’]);
$active_sheet->setCellValueByColumnAndRow(1, $next, $row_l[‘name’]);
$active_sheet->setCellValueByColumnAndRow(2, $next, $row_l[‘info’]);

//Отправляем заголовки с типом контекста и именем файла
header(«Content-Type:application/vnd.ms-excel»);
header(«Content-Disposition:attachment;filename=’simple.xlsx'»);

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

//Отправляем файл
$objWriter->save(‘php://output’);
>;

if($_GET[‘do’]==2) <
//————————————
//2 Часть: чтение файла
//Файл лежит в директории веб-сервера!
$objPHPExcel = PHPExcel_IOFactory::load(«simple.xlsx»);

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
<
//Имя таблицы
$Title = $worksheet->getTitle();
//Последняя используемая строка
$lastRow = $worksheet->getHighestRow();
//Последний используемый столбец
$lastColumn = $worksheet->getHighestColumn();
//Последний используемый индекс столбца
$lastColumnIndex = PHPExcel_Cell::columnIndexFromString($lastColumn);

echo $Title.’

‘;
for ($row = 1; $row getCellByColumnAndRow($col, $row)->getValue();
echo ‘

‘;
>;
echo ‘

‘;
>;
echo ‘

‘.$val.’

‘;
>;
>;

На этом — все, видео выложу на своем канале в YouTube

Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Когда вы впервые создаете экземпляр $objPHPExcel, он уже имеет один лист (лист 0); вы добавите новый лист (который станет листом 1), но установив активный лист на лист $i (когда $i равен 0)… поэтому вы переименовываете и заполняете исходный лист, созданный при создании экземпляра $objPHPExcel а не тот, который вы только что добавили… это ваш заголовок «0».

Вы также используете метод createSheet(), который создает новый рабочий лист и добавляет его в рабочую книгу… но вы также добавляете его снова, что эффективно добавляет лист в две позиции.

Итак, первая итерация, у вас уже есть sheet0, добавьте новый лист в оба индекса 1 и 2 и отредактируйте/запишите лист 0.

Генерация прайс-листа в формате Excel при помощи PHP. Phpexcel

Вторая итерация, вы добавляете новый лист в оба индекса 3 и 4, а также редактируете/заголовок листа 1, но из-за того, что у вас один и тот же лист в индексах 1 и 2, это эффективно записывает на лист по индексу 2. Третья итерация, вы добавляете новый лист в индексы 5 и 6 и редактируете/заголовок 2, перезаписываете свое раннее редактирование/заголовок листа 1, который действовал против листа 2 вместо… и т.д.

ответ дан Mark Baker 24 марта ’12 в 12:56

Чтение excel на PHP — основные методы класса PHPExcel

PHPExcel и авто подбор высоты строки

При работе с библиотекой PHPExcel (для формирования эксэлевских документов «на лету») может возникнуть задача авто определения высоты строки. Другими словами, чтобы большой текст полностью помещался в ячейке с фиксированной шириной, а не урезался до одной строки или выходил за рамки.

Берём библиотеку PHPExcel версии 1.7.9 и начинаем ваять.

Пример «толстой» строки

getDefaultStyle()->getFont()->setName(«Calibri»)->setSize(11); $row = 1; // номер испытуемой строки $col = «A»; // идентификатор испытуемой колонки $w >setActiveSheetIndex(0); $ActiveSheet = $objPHPExcel->getActiveSheet(); // задаём текст $ActiveSheet->setCellValue($col.$row, $text); // задаём ширину испытуемой ячейке $ActiveSheet->getColumnDimension($col)->setW >save(‘php://output’); ?>

В итоге получаем

Решение для одинарных ячеек.

Загоняется текст в ячейку посредством автоматического подбора высоты строки и установки автоматического разбиения по строчкам текста:

// устанавливаем авто подбор высоты $objPHPExcel->getActiveSheet()->getRowDimension($row)->setRowHeight(-1); // и авто перенос текста $objPHPExcel->getActiveSheet()->getStyle($col.$row)->getAlignment()->setWrapText(true);

, где $objPHPExcel — объект класса PHPExcel, $row — номер строки, которой необходимо задать авто подбор высоты, $col — идентификатор столбца, например, А или Z.

Получаем в итоге то, что требовалось.

Всегда есть это «НО».

Решение для авто подбора высоты строки для объединённых ячеек.

Для этого решения нам необходимо знать общую ширину ячейки, которая была собрана с помощью функции mergeCells. Если предыдущее решение работает только с одинарными ячейками, тогда почему бы нам не создать аналогичную, но уже одинарную ячейку в этой же строке, к примеру, в далёкой-далёкой колонке ZZ и задать ей авто перенос текста и скрыть. Тем самым мы заставим Excel установить высоту для данной строки.


$row = 1; // номер испытуемой строки $col1 = «A»; // идентификатор начальной колонки для объединения $col2 = «B»; // идентификатор конечной колонки для объединения $far_col = «ZZ»; // идентификатор «далёкой-далёкой» колонки $w >getActiveSheet(); // задаём текст для дубликата $ActiveSheet->setCellValue($far_col.$row, $text); // устанавливаем идентичную ширину дубликату и делаем невидимым $ActiveSheet->getColumnDimension($far_col)->setWidth($width + $default_width) ->setVisible(false); // задаём авто перенос дубликату $ActiveSheet->getStyle($far_col.$row)->getAlignment()->setWrapText(true);

Получаем в итоге то, что требовалось.

Осуждение статьи �� б

phpexcel: писать данные в Excel с помощью PHP и читать из Excel

Примеры по phpexcel. Создание excel-документа(.xlsx) на php

← разместить еще код

Пример создания excel-документа(.xlsx) на php с помощью класс PHPEXCEL. На странице представлен пример подключения класса и вызов методов для создания документа. Также приведены примеры следующих возможностей: — заполнение ячеек — объединение ячеек — установка ширины колонки — выравнивание контента ячейки — заливка ячеек — рамки ячеек — размер шрифта в ячейках

//———————————-Пример————————————— date_default_timezone_set(‘Europe/London’); if (PHP_SAPI == ‘cli’) die(‘This example should only be run from a Web Browser’); require_once $_SERVER[‘DOCUMENT_ROOT’].»/phpexcel/ >getProperties()->setCreator(«афтор») ->setLastModifiedBy(«Maarten Balliauw») ->setTitle(«Office 2007 XLSX Test Document») ->setSubject(«Office 2007 XLSX Test Document») ->setDescription(«Test document for Office 2007 XLSX, generated using PHP classes.») ->setKeywords(«office 2007 openxml php») ->setCategory(«Test result file»); $objWorkSheet = $objPHPExcel->createSheet(0);/* номер листа */ /* …. здесь заполняем лист …. */ header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’); header(‘Content-Disposition: attachment;filename=»01simple.xlsx»’); header(‘Cache-Control: max-age=0’); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’); $objWriter->save(‘php://output’); //———————————————————————— //———————————-Примеры оформления листа————————————— /* заполняем ячейки */ $objWorkSheet->setCellValue(‘A1’, ‘1 этаж’); /* объединение ячеек */ $objWorkSheet->mergeCells(‘A1:A2’); /* устанавливаем ширину колонки */ $objWorkSheet->getColumnDimension(‘A’)->setWidth(9); /* выравниваем по центру (вертильно-горизонтально) */ $objWorkSheet->getStyle(‘A2’)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER)->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); /* заливаем ячейки нужным цветом — hex (b2b2b2) */ $objWorkSheet ->getStyle(‘A1:A2’) ->getFill() ->setFillType(PHPExcel_Style_Fill::FILL_SOLID) ->getStartColor() ->setRGB(‘hex’); /* устанавливаем бордер ячейкам */ $styleArray = array( ‘borders’ => array( ‘allborders’ => array( ‘style’ => PHPExcel_Style_Border::BORDER_THIN ) ) ); $objWorkSheet->getStyle(‘A1:A2’)->applyFromArray($styleArray); /* размер шрифта в ячейке */ $objWorkSheet->getStyle(‘A1’)->getFont()->setSize(13); /* Имя листа */ $objWorkSheet->setTitle(‘Прайс-лист ‘.$block_section);

Чтение excel на PHP — основные методы класса PHPExcel

В статье представлены различные PHP расширения для чтения файлов XLS, XLSX. Описаны их плюсы и минусы, а также примеры чтения в массив PHP.

PHPExcel

Проект на githab: https://github.com/PHPOffice/PHPExcel
Скачать архив:PHPExcel-1.8.zip

Огромная библиотека читает и формирует фалы xls, xlsx, csv.

  • Для файлов xlsx потребует расширение ZipArchive.
  • Потребляет много памяти.

Пример чтения файла в массив:

PHP-ExcelReader

Сайт: https://sourceforge.net/projects/phpexcelreader/
Скачать архив: phpExcelReader.zip (исправленный)

  • Прочтет только xls файлы.
  • Есть проблемы с кодировкой.

PHP-Excel-Reader

Сайт: https://code.google.com/archive/p/php-excel-reader/
Скачать архив: php-excel-reader.zip (2.21)

Форк библиотеки PHP Excel Reader с SourceForge предназначенный для вывода таблицы в HTML.
Например файл example.xls выведет следующим образом:

Также у библиотеки есть методы для получения формата и содержания каждой ячейки по отдельности.

Nuovo Spreadsheet-Reader

Сайт: https://github.com/nuovo/spreadsheet-reader
Скачать архив: spreadsheet-reader.zip

Читает файлы xlsx, xls, csv и OpenOffice ods. Для чтения xls используется предыдущая библиотека php-excel-reader.

PHP-Spreadsheetreader

Сайт: https://code.google.com/archive/p/php-spreadsheetreader/
Скачать архив: SpreadsheetReader.rar

Откроет только файлы в формате XML Excel 2004.

Создание таблиц Excel средствами PHP

Подразумевается, что у Вас есть элементарные знания Excel, но ничего слишком серьезного. Вам даже не обязательно иметь копию, все приведенные примеры работают так же хорошо и с OpenOffice Calc.Вот о чем пойдет разговор в этой статье:

  • Знакомство с PEAR::Spreadsheet_Excel_Writer
  • Продолжаем работу: знакомство с API
  • Добавлениe форматирования ячеек
  • Добавление функции Excel: C1+D1=2!

Подразумевается, что у Вас есть элементарные знания Excel, но ничего слишком серьезного. Вам даже не обязательно иметь копию, все приведенные примеры работают так же хорошо и с OpenOffice Calc.

Знакомство с PEAR:: Spreadsheet_Excel_Writer

Excel — ом пользуются те, кто работает с финансами и деньгами. Иными словами Буxгалтерский департамент, который не заплатил вашу сумму вовремя, использует ее. Сделайте жизнь буxгалетеров легче и они ответят Вам тем же.

Разве не было бы лучше, если бы Вы могли дать Вашим клиентам возможность доступа к загружаемым данным в виде листов Excel? Xорошие новости
состоят в том, что Вы это можете сделать при помощи PEAR::Spreadsheet_Excel_Writer.

«Невозможно!» Вы скажете. «Excel использует файловый формат Microsoft. Это сделать невозможно!».

Да, да это возможно. Spreadsheet_Excel_Writer генерирует «реальные вещи», с функциями Excel, форматированием и все остальным. Нет, тут мы не говорим о файлаx разделенных запятыми, или использующиx COM расширения (или любие другие расширения). Написан он при помощи простого PHP, и будет работать под Unix сервером так же хорошо как и на Windows серверах Если быть кратким, то PEAR::Spreadsheet_Excel_Writer, вместе с дополнительными возможностями PEAR::OLE «понимает» формат Microsoft Excel.

Давайте снимем шляпы перед Xavier Noguer, который сделал удивительную работу для внедрения этого в PHP, с помощью Mika Tuupola для Spreadsheet_Excel_Writer.

Сейчас, без дальнейшего шума, и вооруженными полными знаниями управления пакета PEAR, который у Вас должен быть установлен, начнем загрузку библиотек. Откройте Вашу командную строку и введите в нем следующее:

Вот и все. Мы готовы!

Важное замечание: Для примеров в этой статье я использовал PEAR::OLE version 0.5 и PEAR::Spreadsheet_Excel_Writer version 0.7. Предупреждаю, что кое — что может изменится в будущиx версияx.

Продолжаем наш путь. Давайте создадим простой лист данных.

Имя файла: example_1.php

Откройте скрипт в Вашем обозревателе, (подразумевается, что он «знаком» с Excel или OpenOffice Calc) и он отобразит лист Excel с номерами от 0 до 10 в бинарном виде.

Сохранение файлов

В этом случае лист создается динамически — ничего не соxраняется на сервере. Если Вы xотите вместо этого создать файл, Вы можете отбросить часть для создания листа который не изменился, для этого просто отправляя конструктору имя файла и путь к нему, и этим избегая необxодимости отправки HTTP заголовков:

Имя файла: example_2.php

Если Вы используете систему семейства Unix, то не забудьте изменить разрешения к папке в которой Вы xраните листы данных, чтобы PHP смог добавить в ниx данные.

Обзор API

Xорошо, мы разобрались с основными понятиями. Чтобы получить максимум от PEAR::Spreadsheet_Excel_Writer, Вам нужно знать немного больше об API. Документация API, которая доступна на сайте PEAR сейчас устаревшая (она стал намного больше, с теx пор была создана версия документации).
Благодаря авторам, которые добавили много документации непосредственно в код, Вы можете создать свою собственную документацию API, если Вы загрузите phpDocumentor и укажете его на папку, которая содержит все исxодные коды Spreadsheet_Excel_Writer.

Основной класс, с которого Вы всегда будете начинать работу — Spreadsheet_Excel_Writer, представляет из себя пункт доступа ко всем остальным классам в библиотеке. Он предоставляет два важныx заводскиx метода (которые определены в родительном классе Spreadsheet_Excel_Writer_Workbook:)

* addWorksheet()- возвращает случай Spreadsheet_Excel_Writer_Worksheet. Большая часть работы выполняется с случай этого класса, давая Вам возможность вписывать данные в ячейки одного листа.
* addFormat()- возвращает случай Spreadsheet_Excel_Writer_Format, который используется для добавления визуального форматирования ячеек.

Библиотека также содержит три другиx класса, которыx Вы должны опосаться, xотя Вам врят ли когда нибудь потребуется иx использовать.

* Spreadsheet_Excel_Writer_Validator делает возможным добавление проверочных правил для ячеек. Сейчас для этого класса не существует документации. Оно как бы является экспериментальным кодом, следовательно я не буду здесь его обсуждать. В основном, он предоставляет возможность проверки данныx введенныx в ячейку конечным пользователем. Более сложные правила проверки могут быть установлены при помощи расширения класса.
Класс Spreadsheet_Excel_Writer_Workbook предоставляет метод addValidator() для создания случая проверки, в то время как Spreadsheet_Excel_Writer_Worksheet дает возможность правилам проверки назначиться в ячейки при помощи метода setValidation()
* Spreadsheet_Excel_Writer_Parser, который является Parser — ом для листов данныx Excel, и помогает Вам проверить, является ли функция правильным синтаксисом Excel.
* И наконец — Spreadsheet_Excel_Writer_BIFFwriter — используется для создания Формата Бинарныx Файлов для xранения файлов Excel. Если Вы интересуетесь взломом Excel, то Вам будет интересно изучить что он делает, если же нет, то Вам ни к чему волноваться об этом, так как библиотека полностью скрывает этот класс.

Замешательство нулевого индекса.

Один из методов примечания — Spreadsheet_Excel_Writer_Worksheet::write(), который мы видели в вышеизложенном примере, Вы будете использовать много раз для добавления
данныx в ячейки. Этот метод немного запутывающий по ставнению с тем же методом в Excel.

Первым аргументом функции write()является номер строки. Номером первой строки в таблицах PEAR::Spreadsheet_Excel_Writer является 0, а не 1, как принято в Excel.

Вторым аргументом является номер столбца. Теперь, колонки в Excel, идентифицированы буквами алфавита а не числами, так что Вы только должны будете привыкнуть к переводу между двумя. Буква F является 6-ым в алфавите, так что второй аргумент… 5 (конечно!) — крайняя левая колонка — 0 (ноль) в PEAR::Spreadsheet_Excel_Writer, так что Вы должны
вычесть, чтобы получить номер колонки.

Третьим аргументом функции write()являются данные, которые нужно вставить в ячейки; также существует четвертый не обязательный аргумент и используется для визуального форматирования ячеек.

Существуют еще множество методов в классе Spreadsheet_Excel_Writer_Worksheet, такие как для «замораживания» или «таяния» частей листа, для форматирования листа в целом для печати и т.д. О ниx я немного расскажу в последующих примераx, но большинство Вы должны будете исследовать самим.

Добавление форматирования ячеек.

Так как насчет более красивыx листов? Мы можем достигнуть этого при помощи PEAR::Spreadsheet_Excel_Writer используя функцию addFormat()для преобразования объекта в Spreadsheet_Excel_Writer_Format. Мы применяем форматирование к этому объекту, используя методы, которые он обеспечивает, затем передаваем его методом write() функции
Spreadsheet_Excel_Writer_Worksheet, для добавления форматирования ячейке, которую мы добавили.

Ради примера «Реального Мира», давайте представим, что я xочу дать своим клиентам Интернет магазина phpPetstore.com возможность скачивания чека для купленныx ими вещей в виде Книги (Workbook) содержащей один лист (Worksheet).

Я начинаю свой лист обычным материалом.

Далее мы добавим заголовок к листу — сливая некоторые ячейки, для его размещения. Здесь мы получим первое представления того, как делается форматирование:

Сперва заметьте, что я получил объект форматирования вызвав addFormat() посредством объекта $xls, который представляет текущий лист. Затем я применил к объекту некоторое специфическое форматирование (методы под названием setBold() говорят сами о себе — для более подробной информации смотрите документацию API).

Когда форматирование закончено, я вызываю функцию write() для объекта $cart, для добавления к ячейке, передавая объект как четвертый аргумент.

Единственный нестандартный ход я здесь сделал, это объединение четырех ячеек. Вызывая setAlign(‘merge’) для объекта форматирования (обычно Вы используете для этого ‘left’, ‘right’ или ‘center’), я приказал Spreadsheet_Excel_Writer, что он должен объединить все ячейки к которым относиться это форматирования. Вот почему я создал три пустых ячеек и
применил к ним форматирование.

Использование setRow() позволяет мне изменить высоту строки, сделая ее больше, чем установка высоты строки Excel по умолчанию. Этот метод имеет много дополнительных аргументов форматирования, которые позволяют Вам, например, применить объект форматирования к текущей строке. Подобно setColumn() я могу установить ширину столбца и применить к нему дальнейшее форматирование. Разница состоит в том, что setRow() применяется только лишь к одной строке, когда setColumn() применяется ко многим столбцам.

Теперь мне нужны данные для добавления к листу. Чтобы не усложнять пример (добавляя базу данных), я буду использовать индексированный массив ассоциативных массивов, который якобы является результатом отбора SQL.

«Столбцы в базе данных» являются ключами массива — ‘description’, ‘price’ и ‘quantity’, второе, что мы должны сделать, это добавить заголовки столбцов с дополнительным заголовком ‘Total’, который мы скоро будем использовать:

Вы уже видели форматирование. Вы раньше не видели метод writeRow(). Этот метод делает одно и то же, что и write(), но позволяет Вам добавлять массив данных с лева направо, начиная с определенного номера строки или столбца. Этот метод позволяет значительно сократить код программы.


Еще я хочу сделать так, чтобы заголовки столбцов были всегда видны, когда мы прокручиваем страницу. В Excel — e сделать это можно посредством «замораживания» — выбирая блок ячеек, которые будут видны, когда пользователь будет прокручивать лист, позволяя ему видеть заголовки столбцов (в этом случае), которые объясняют что предствалвют эти данные. То же самое возможно в PEAR::Spreadsheet_Excel_Writer:

Заметьте, что «замораживание» было применено непосредственно объектом $cart, а не посредством объекта форматирования, так как оно было применено к нескольким ячейкам. С другой стороны, форматирование было применено к отдельным ячейкам.

Наконец я прохожу через обьекты в «своей сумке», добавляя данные к листу:

Вот в принцыпе и все. Если Вы новичок ООП в PHP, на первый взгляд это может показаться немного отпугивающим, но Вы могли уже заметить, что все методы очень понятно названы и Вы можете понять их значения только лишь взглянув на них. Идея притяжения одного объекта другим может быть новшевством для Вас, но когда Вы думаете об этом, то кажется, что Вы создаете объект Worksheet вызывая метод addWorksheetSheet() и что Вы добавляете объекты форматирования к ячейке тогда, когда Вы write() (пишете) в Worksheet.

Добавление функции Excel.

Теперь Вы умеете создавать приятные на вид крупноформатные таблицы, но, как любой ас Excel -a скажет, простое отображение данных не так уж и полезно. Жизнь становится интересней когда Вы используете функции Excel для подсчета данных и преобразования их во что нибудь более интересное.

Теперь я не ас Excel — a (и это не руководство по Excel), но ясно, что мой чек должен быть более умным, так что мне нужно добавить некоторые расчеты основанные на данные, которые я уже внес в таблицу. Для каждой строки я хочу отобразить «total item cost» (сумма купленных вещей) — данные содержат цену единицы измерения а также количество купленных изделий:

Переведя на термины Excel, для получения суммы пятой строки надо написать формулу подобную следующей:

Для достижения этого с PEAR::Spreadsheet_Excel_Writer, мне всего лишь нужно подправитьть код, который проводит проход через данные:

Добавление формулы не представляет из себя труда — мы всего лишь воспользуемся методом writeFormula(). Но самое главное то, как я упомянул ранее, —что Excel начинает отсчет строк начиная с единицы, тогда как PEAR::Spreadsheet_Excel_Writer начинает с нуля. Это означает, что при создании функции я должен помнить об этом, в противном случае я буду ссылаться на неправильные ячейки. Вот почему я создал переменную $excelRow, которая из себя представляет $currentRow + 1.Вы можете подумать, что это design flaw on behalf of the authors, но помните, что в PHP, так же как и во многих языках программирования, индексированные массивы начинаются с нулевого индекса.

Теперь мой отображает суммы для каждой строки. Но как насчет того, чтобы сложить все суммы, чтобы посетитель знал о величине той суммы которая будет на чеке их кредитной карточки? Для этого достаточно сложить все суммы и результат отобразить в какой нибудь ячейке.

Терминами Excel, мне нужно использовать функцию SUM(), для сложения всех сумм, которые отображаются в столбце D.

Для помещения этого в лист, после того как проход через данные окончен, я добавляю следующее:

Наконец я заканчиваю создание своего чека отправляя лист непосредственно в обозреватель.

Вот и все. Лист готов для скачивания. Полная версия кода доступна здесь .

Экспорт из PHP в Excel с помощью PhpSpreadsheet

В своей профессиональной деятельности я периодически сталкиваюсь с задачами экспорта/генерации данных в формате XLS/XLSX (Excel). Библиотека PhpSpreadsheet позволяет их решить.

Данная библиотека является логичным продолжением библиотеки PHPExcel, которая уже несколько лет не поддерживается.

Скачать и установить библиотеку предлагается с помощью composer:

Опишу реализацию типичных задач.

Обратите внимание, что для корректной работы XMLWriter (библиотеки PHP) необходима корректная его настройка:

Типовой Hello World

Получение Excel документа через Ajax запрос

Php обработчик генерации XLSX документа:

Здесь кратко поясню:

PHP обработчик формирует Excel документ и кодирует его в base64. Далее JS создает временную ссылку и в тег «href» кладёт этот закодированный контент. После инициации клика по ссылке происходит скачивание XLSX документа, а сама ссылка удаляется со страницы. Этакая мгновенная генерация Excel документа.

Установка заголовка листа

Добавление текстового контента в ячейку

Можно добавлять по координатам (отчет начинается с единицы):

Также можно воспользоваться символьными идентификаторами:

Чтение и запись данных Excel из приложений PHP

Использование поддержки XML

Пакет Microsoft Office 2003 для операционной системы Microsoft Windows® открыл для разработчиков целый ряд новых возможностей, с которыми они не сталкивались прежде. Конечно, в вашем распоряжении имелся набор новых функций, однако наиболее значимым преимуществом стало добавление поддержки файловых XML-форматов. В Office 2003 вы можете сохранить электронную таблицу Microsoft Excel в XML-формате и использовать ХМL-файл так же, как и его двоичный эквивалент. То же самое касается и Microsoft Word.

Почему же XML-формат имеет такое большое значение? Потому, что на протяжении многих лет истинная мощь Excel или Word была заблокирована использованием файлов в двоичных форматах, а доступ к этим файлам извне можно было получить только с помощью программ-конвертеров. Теперь же файлы Excel или Word можно читать и записывать с помощью таких инструментов, как XSLT (Extensible Stylesheet Language Transformation) или DOM (XML Document Object Model), встроенных в язык программирования PHP.

В этой статье я покажу, как написать Web-приложение на PHP, которое использует эти форматы для чтения данных из электронной таблицы Excel и записи их в БД, а также для экспорта содержимого таблицы БД в электронную таблицу Excel.

Создание базы данных

В этой статье приведен пример простого Web-приложения, которое наглядно покажет вам работу XML-механизма Excel. Это приложение представляет собой таблицу, содержащую имена людей и их адреса электронной почты.

Синтаксис для создания схемы базы данных в MySQL выглядит следующим образом.

Листинг 1. SQL-код для создания схемы базы данных

Этот файл является простой базой данных, состоящей из одной таблицы с именем names, которая имеет пять полей: автоинкрементный идентификатор, имя, отчество, фамилия и адрес электронной почты.

Создайте базу данных с помощью инструмента командной строки Mysqladmin: mysqladmin —user=root create names . Затем загрузите в нее данные о таблице из файла схемы: mysql —user=root names . Используемые имя пользователя и пароль зависят от настроек вашего экземпляра MySQL, но сама идея не меняется – сначала создается база данных, а затем с помощью SQL-файла создаются таблицы с необходимыми полями.

Получение данных для импорта

Теперь нужно получить данные, которые будут импортироваться. Для этого создайте новый файл Excel. В верхней ячейке каждого столбца введите значения First, Middle, Last и Email. После этого добавьте в список несколько строк данных (рисунок 1).

Рисунок 1. Данные для импорта

Вы можете создать список любой длины или изменить поля так, как сочтете нужным. PHP-сценарий импортирования, рассматриваемый в этой статье, безоговорочно игнорирует первую строку данных, считая ее строкой заголовков. В рабочем приложении, вы можете считывать и выполнять разбор строки заголовков, чтобы определять, какие поля содержатся в столбцах, и вносить соответствующие изменения в логику импорта.

Последний шаг – это сохранение файла в формате XML. Для этого щелкните пункт меню File > Save As и в диалоговом окне Save As выберите формат XML Spreadsheet из раскрывающегося списка Save as type (рисунок 2).

Рисунок 2. Сохранение файла в виде электронной таблицы XML

После создания XML-файла можно приступать к написанию PHP-приложения.

Импорт данных

Импорт данных начинается с создания несложной страницы, на которой выбирается входной XML-файл Excel (рисунок 3).

Рисунок 3. Выбор входного XML-файла Excel

Код этой страницы показан в листинге 2.

Листинг 2. Код страницы загрузки

Я присвоил файлу расширение .php, хотя на самом деле это вовсе не PHP. Это обычный HTML-файл, позволяющий пользователю указать файл и передать его на страницу import.php, на которой начинается все самое интересное.

Чтение XML-данных Excel

Для простоты я разделил написание страницы import.php на два этапа. На первом этапе выполняется разбор XML-данных и их вывод в форме таблицы. На втором этапе добавляется логика, в которой реализовано добавление записей в базу данных.

В листинге 3 показан пример XML-файла Excel 2003.

Листинг 3. Пример XML-файла Excel

Я вырезал часть строк из середины листинга, иначе здесь было бы напечатано все содержимое файла Excel. Листинг 3 является сравнительно чистым кодом XML. Обратите внимание на то, что в разделе заголовков в начале листинга содержится информация о документе и его авторе, задаются определенные правила отображения, стили списков и так далее. Затем в виде набора рабочих листов внутри главного объекта Workbook представлены непосредственно сами данные.

Первый объект Worksheet содержит реальные данные. Данные в этом объекте располагаются внутри тега Table , который в свою очередь содержит набор тегов Row и Cell . В каждом теге Cell располагается связанный с ним тег Data , содержащий данные ячейки. В нашем примере данные всегда представлены в виде строк (тип String).

По умолчанию при создании нового документа Excel создаются три рабочих листа с именами Sheet1, Sheet2 и Sheet3. Я не стал удалять второй и третий лист, поэтому в конце листинга вы можете видеть эти пустые листы.

В листинге 4 показана первая версия сценария import.php.

Листинг 4. Первая версия сценария импорта

Сценарий начинается с чтения временного файла, загруженного в объект DOMDocument . Затем выполняется поиск всех тегов Row . Первая строка пропускается в соответствии с логикой обработки переменной $first_row . Далее для каждой строки выполняется циклический анализ каждого содержащегося в ней тега Cell .

Следующая хитрость заключается в определении столбца, в котором вы находитесь. Как видно из листинга 3, в теге Cell не указан номер строки или столбца – за этим должен следить сценарий. На самом деле все еще немного сложнее. В действительности в теге Cell содержится атрибут ss:Index , указывающий, в каком столбце находится ячейка, если в текущей строке присутствуют пустые столбцы. Это именно то, что ищет код функции getAttribute(‘index’) .

После определения индекса не остается ничего сложного. Значение ячейки помещается в локальный элемент, связанный с этим полем. Затем в конце строки вызывается функция add_person для добавления данных о человеке в результирующий набор

В самом конце с помощью обычных функций PHP найденные данные выводятся в виде HTML-таблицы (рисунок 4).

Рисунок 4. Вывод данных в виде HTML-таблицы

Следующим шагом нужно загрузить информацию в базу данных.

Добавление информации в базу данных

После добавления полученного содержимого строки в структуру PHP необходимо занести его в базу данных. Для этого я добавил код, использующий модуль Pear DB (листинг 5).

Листинг 5. Вторая версия сценария импорта

На рисунке 5 показан вывод данных в браузере Firefox.

Рисунок 5. База данных


Результат выглядит не очень красиво, но это не важно. Важно то, что с помощью операторов prepare и execute можно добавить информацию в базу данных. Чтобы показать это, я создал еще одну страницу под названием list.php, отображающую информацию, полученную из базы данных (листинг 6).

Листинг 6. List.php

Эта простая страница начинается с применения SQL-функции select к таблице names. После этого создается таблица, в которую с помощью метода fetchInto добавляются все строки.

На рисунке 6 показаны данные, отображаемые этой страницей.

Рисунок 6. Данные на странице list.php

Несмотря на не очень красивый вид страницы, общая идея занесения информации в базу данных должна быть понятна. Это, в свою очередь, послужит основой сценария, генерирующего XML-файл для экспорта в Excel.

Создание XML-файла для экспорта в Excel

Заключительным шагом является создание XML-файла Excel. Я начал с того, что скопировал XML-содержимое Excel в PHP-сценарий (листинг 7), поскольку это простейший способ получить XML-файл Excel, который будет корректно проанализирован (поскольку Excel очень требователен к своему XML-формату).

Листинг 7. Страница экспорта XML

Сценарий начинается с того, что для результирующего вывода устанавливается формат XML. Это важно, поскольку в противном случае браузеры будут воспринимать этот код просто как некорректный HTML.

Я изменил часть кода, содержащую SQL-запрос, таким образом, чтобы результаты запроса сохранялись в массив. В данном случае необходимо поместить в атрибут ss:ExpandedRowCount количество строк плюс одну строку (отвечающую за заголовки). Если бы это была обычная страница отчета, дополнительная строка заголовков была бы не нужна.

На рисунке 7 показан результат открытия страницы в браузере.

Рисунок 7. Полученное XML-содержимое в браузере Firefox

Не очень впечатляет. Но посмотрите, что произойдет, когда я открою эту же ссылку в Internet Explorer (рисунок 8).

Рисунок 8. Полученное XML-содержимое в браузере Internet Explorer

Почувствуйте разницу. Теперь это полноценная электронная таблица с форматированием, открытая в браузере (конечно, в Firefox вы можете щелкнуть правой кнопкой мыши на ссылке, сохранить XML-код в файле и, таким образом, открыть его).

Технические приемы, открывающие новые возможности

Как и у любых передовых технологий, у данной методики имеются определенные ограничения. Например, данный метод пока не работает на Macintosh, поскольку последняя версия Office для Mac не поддерживает XML-файлы.

Другой проблемой может стать отладка файлов. В случае даже незначительной ошибки в XML-коде встроенный объект Excel перейдет в состояние, в котором Excel будет считать, что этот объект уже открыт, и откажется запускаться. Это можно исправить только путем перезапуска приложения.

Но даже при таких условиях данный метод открывает PHP-разработчикам не имеющие себе равных возможности. Как часто вы сталкивались с необходимостью вручную (ячейка за ячейкой, абзац за абзацем) переносить в Web-приложения данные, содержащиеся в Excel, Word и им подобных источниках? С помощью технологии импорта, такой как эта, ваша проблема может быть решена. Вы можете считывать данные непосредственно из электронной таблицы или документа.

То же самое можно сказать и об экспорте данных. Язык HTML отлично подходит для отображения статей и заметок, но он никогда не предназначался для визуализации табличных данных. С помощью описанной здесь методики вы можете сгенерировать электронную таблицу (с формулами, форматированием и всеми другими возможностями) в том виде, с которым привыкли работать пользователи.

Загрузка данных из Excel в MySQL с помощью PHP

Не так давно появилась задача — загрузить данные из Ecxel файла в базу сайта, и реализовать механизм так, чтобы быстро можно было обновлять эти данные, т.е. загружать новый файл. Решил попробовать парсер Excel-файлов phpExcelReader, но сколько не бился с ним, получал ошибку типа «… is not readable». Поэтому решил использовать библиотеку PHPExcel.

Загружать будем прайс-лист:

Артикул Наименование Количество Цена Валюта Единица
123456 Апельсин 20 50000 руб килограмм
123457 Мандарин 20 54000 руб килограмм
123458 Яблоко 50 23500 руб килограмм

В таблицу со структурой:

id article name
quantity
price
currency
unit

Скачав архив с библиотекой и открыв его вы увидите несколько папок и файлов — это описание и примеры использования библиотеки. Нам понадобится папка «Classes» — распаковываем архив и загружаем её, например, в корень сайта.

Файл excel можно загрузить в нужную папку на сервере, например uploads, через ftp сервер или создать страницу загрузки с «file» name= «upload_file» . Для меня конечно второй вариант был в приоритете (как реализовать загрузку файла на сервер я писал в статье «Отправка формы и файлов через Ajax»).

Итак, предположим, что форму загрузки мы сделали, библиотеку подключили, начнем писать скрипт обработки файла и загрузки в базу данных.

Чтение данных из файла «.XLSX» с помощью PHPExcel

В проекте может понадобиться импорт данных из файла Excel на сайт. Это может быть прайс-лист с ценам который необходимо обновить, данные статистики для последующей обработки или список адресов для рассылки. Один из моментов заключается в том что пользователь должен без особых знаний подготовить документ для загрузки, для базового стандарта можно использовать Excel:

  • Большинство систем имеют возможность экспортировать данные в excel
  • Работой с Microsoft Excel на базовом уровне владеют 99.9% пользователей компьютера, в бизнесе – это можно сказать стандарт.
  • Объяснить как должен выглядеть файл в excele для загрузки в разы легче

Библиотекой PHPExcel пользуются многие сайты для генерации отчетов или импорта данных из таблиц MS Excel. PHPExcel позволяет читать ячейки таблицы построчно , приходясь по ним циклом.

Простой способ использования PHPExcel:

Скачиваем и распаковываем последнию версию библиотеки с сайта phpexcel.codeplex.com (там же есть примеры) ( или PHPExcel 1.8.0 )

Файл excel имеет содержание:

И собственно сам скрипт пример работы чтение данных из файла «.XLSX»:

Как можно вставить формулу в лист excel, используя phpexcel

Я проверил множество сайтов для решения моей проблемы, но не нашел правильного решения. Я хочу вставить формулу, которая рассчитает общее количество баллов, полученных студентами. Знаки будут введены учителями. Я написал PHP-код, который загружает файл excel после вставки имен студентов из базы данных и maxmarks. Мой файл excel выглядит так любезно видеть изображение, поскольку у меня нет 10 репутации. Мне не разрешено вставлять изображение в сообщение, пожалуйста, следуйте по этой ссылке http://cbsecsnip.in/Capture.JPG Столбец «Знаки» пуст, где учитель отмечает, что другие данные извлекаются из базы данных, а столбцу «Процент» нужна формула, которая автоматически вычисляет метки, когда учитель вводит метки. Столбец заполненной колонки и Процент защищен. Я использую PHPExcel. Вот PHP-код, который генерирует этот файл excel

Если какой-либо эксперт подскажет мне, как я могу это сделать, я буду благодарен всем им

@Mark Baker Спасибо за то, что я пробовал и делал вот так —

Прочтите раздел 4.6.4 документации разработчика и примеры, например 03formulas.php .

Вы можете написать формулу, как вы ее пишете в самом Excel, просто сохраните формулу с префиксом = в ячейке

Будем писать формулу =SUM(A10:E9) в ячейке E10

При написании формулы в ячейке помните, что:

  • Десятичный разделитель . (period)
  • Разделитель аргументов функции , (запятая)
  • Матричный разделитель строк ; (точка с запятой)
  • Должны использоваться английские имена функций

Как экспортировать данные из PHP в Excel файл?

Возможно Вы создаёте приложение для офиса или компании, а, возможно, и крупный сервис. Для этого, например, Вам понадобится выгрузка/экспорт данных в файл Excel. Не важно что это — отчётность, прайс-лист или обычный список со склада — теперь пользователь может скачать удобный ему файл!

Чтобы сгенерировать файл xls или xlsx, нам потребуется с Вами отдельная библиотека, которая позволяет работать с Excel-файлами.

Библиотека PHPExcel, скачать её можно с http://phpexcel.codeplex.com .
Ниже пример генерации Excel-файла через PHP-скрипт.

Код PHP

По результатам работы скрипта в той же директории, что и php-файл, появится наш example.xlsx . Файл с данным расширением соответственно можно открыть в Excel 2007 и поздних версиях.

Библиотека даёт большой спектр возможностей, о которых уже можно узнать из документации .

Расширенный пример с сайта: пример кода PHP

Спасибо за внимание! Стараемся шагать в ногу со временем!)

Занесение данных в шаблон excel

Добрый день! такая задача:
есть, допустим, каталог заказов. В карточке заказа кнопка — печать накладной. При щелчке должна формироваться накладная по шаблону excel, и должно выскакивать предложение куда сохранить документ.
Данные в этот шаблон должны средствами PHP/SQL вытаскиваться из БД по данному заказу.

Пробовал реализовать через PHPExcel, опыта мало, ничего не получилось. Подскажите, может у кого-то есть готовые примеры ?

Дата Ф.И.О e-mail
20.11.2003 Иванов П.С [email protected]
20.13.2005 Сидоров П.А [email protected]
23.11.2008 Петров П.С [email protected] 04.02.2014, 21:20

Занесение в базу данных phpMyAdmin
Доброго времени суток. Для обучения работы с selenium мне понадобилась форма регистрации, заносящая.

Автоматическое занесение данных в таблицу
Мне нужно чтобы первого числа каждого месяца в базу заносились данные автоматически как это.

Определение ip и занесение его в базу данных
Допустим существует страница регистрации, пользователь регистрируется, и его ip заносится в базу.

Занесение данных с $_POST в обычный массив
Всем привет. Помогите пожалуста решить проблему. Мне нужно занести дание введений в форму в.

Php занесение получаемых данных в текстовый файл
можно ли реализовать в php так что бы при пост запросе на него все данные заносились в текстовик на.

05.02.2014, 05:33 2

Решение

28.02.2020, 13:36 3

Добрый день!
Хочу заполнять шаблон .xls данными. Есть следующий код:

И есть два компа: рабочий (win7 apache php fcgid) и домашний (то же, только без fcgid).
На первом браузер выдает:
[q]I’m using MS Excel 14.0
Fatal error: in C:\Apache24\htdocs\xls\xls.php on line 11[/q]
а в логах апача:
[q][Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: PHP Fatal error: Uncaught exception ‘com_exception’ with message ‘Source: Microsoft Excel
Description: \xcf\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xfe Microsoft Excel \xed\xe5 \xf3\xe4\xe0\xe5\xf2\xf1\xff \xef\xee\xeb\xf3\xf7\xe8\xf2\xfc \xe4\xee\xf1\xf2\xf3\xef \xea \xf4\xe0\xe9\xeb\xf3 «c:\\temp\\example.xls». \xdd\xf2\xee \xec\xee\xe6\xe5\xf2 \xe1\xfb\xf2\xfc \xe2\xfb\xe7\xe2\xe0\xed\xee \xee\xe4\xed\xee\xe9 \xe8\xe7 \xf1\xeb\xe5\xe4\xf3\xfe\xf9\xe8\xf5 \xef\xf0\xe8\xf7\xe8\xed.
[Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: \x95 \xd3\xea\xe0\xe7\xe0\xed \xed\xe5\xf1\xf3\xf9\xe5\xf1\xf2\xe2\xf3\xfe\xf9\xe8\xe9 \xf4\xe0\xe9\xeb \xe8\xeb\xe8 \xef\xf3\xf2\xfc.
[Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: \x95 \xd4\xe0\xe9\xeb \xe8\xf1\xef\xee\xeb\xfc\xe7\xf3\xe5\xf2\xf1\xff \xe4\xf0\xf3\xe3\xee\xe9 \xef\xf0\xee\xe3\xf0\xe0\xec\xec\xee\xe9.
[Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: \x95 \xc8\xec\xff \xea\xed\xe8\xe3\xe8, \xea\xee\xf2\xee\xf0\xf3\xfe \xe2\xfb \xef\xfb\xf2\xe0\xe5\xf2\xe5\xf1\xfc \xf1\xee\xf5\xf0\xe0\xed\xe8\xf2\xfc, \xf1\xee\xe2\xef\xe0\xe4\xe0\xe5\xf2 \xf1 \xe8\xec\xe5\xed\xe5\xec \xe4\xf0\xf3\xe3\xee\xe9 \xea\xed\xe8\xe3\xe8, \xee\xf2\xea\xf0\xfb\xf2\xee\xe9 \xe2 \xe4\xe0\xed\xed\xfb\xe9 \xec\xee\xec\xe5\xed\xf2.’ in C:\\Apache24\\htdocs\\xls\\xls.php:11
[Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: Stack trace:
[Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: #0 C:\\Apache24\\htdocs\\xls\\xls.php(11): variant->Open(‘c:\\\\temp\\\\example. ‘)
[Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: #1


[Fri Feb 26 16:17:37.589089 2020] [fcgid:warn] [pid 4424:tid 760] [client 10.104.5.5:60579] mod_fcgid: stderr: thrown in C:\\Apache24\\htdocs\\xls\\xls.php on line 11[/q]
Файл New.xls не создается.

А на втором браузер выдает:
[q]I’m using MS Excel 14.0
Fatal error: in C:\Apache24\htdocs\xls\xls.php on line 23[/q]
а в логах апача:
[q][Sun Feb 28 12:51:24.346995 2020] [:error] [pid 2260:tid 796] [client ::1:50048] PHP Fatal error: Uncaught exception ‘com_exception’ with message ‘Error [0x80020003] \xd7\xeb\xe5\xed \xe3\xf0\xf3\xef\xef\xfb \xed\xe5 \xed\xe0\xe9\xe4\xe5\xed.\r\n’ in C:\\Apache24\\htdocs\\xls\\xls.php:23\nStack trace:\n#0 C:\\Apache24\\htdocs\\xls\\xls.php(23): com->Release()\n#1

\n thrown in C:\\Apache24\\htdocs\\xls\\xls.php on line 23[/q]
При этом файл New.xls создается с заполненной ячейкой.

Помогите разобраться что за ошибки и как от них избавиться!

Топ-пост этого месяца:  Как наполнять статейный раздел в интернет-магазине
Добавить комментарий