Как сохранить область печати в файле xlsx в PDF с помощью PHPExcel

Как мне сохранить область печати на листе Excel в формате PDF?

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

2

Решение

Предполагая, что вы работаете на сервере Windows, я собираюсь предложить другой подход: использование библиотек классов COM или DOTNET, доступных в PHP на Windows (http://php.net/manual/en/book.com.php). Если нет, пожалуйста, игнорируйте мой ответ, так как он не будет работать.

Моя идея состоит в том, чтобы использовать встроенную возможность макросов Excel для выбора области печати и использования встроенной функции экспорта в PDF. Таким образом, форматы ячеек должны оставаться неизменными. Таким образом, ваш файл .xlsw становится файлом .xlsm с добавлением необходимого кода VBA для выбора нужного диапазона (область печати) и экспорта в PDF. Затем библиотеки классов COM или DOTNET будут использоваться для создания электронной таблицы и доступа к открытым объектам (включая макросы). Вы также можете управлять экспортом через автоматизацию COM / DOTNET и не использовать макрос, если у вас нет контроля над самой электронной таблицей.

2

Другие решения

В dompdf доступны только следующие варианты печати: размер и ориентация бумаги. Кроме того, область печати — это специальная директива, которая не влияет на экспорт в другие форматы. Думайте о области печати как о специализированных маркерах и не более того.

Лучшим вариантом в этом случае является очистка или скрытие всех ячеек за пределами области печати с помощью цикла перед преобразованием в pdf.

1

  1. Xlsx файл — ZIP пакет (ссылка на сайт)
  2. Информация о области печати, содержащейся в файле ‘Х / workbook.xml’. Получить содержимое «xl / workbook.xml» с помощью php ZipArchive класс И его ZipArchive :: getFromName метод
  3. Элемент, содержащий область печати <defineName name = ‘_ xlnm.Print_Area’> </ definedName>. Извлечение информации из этого тега с использованием PHP SimpleXMLElement класс и его метод SimpleXMLElement :: XPath
  4. Когда информация о области печати будет извлечена:
    • сделать копию файла xlsx
    • извлечь файл с именем ‘Х / листы / sheet1’ (или похожие)
    • цикл по элементам файла в разделе ‘SheetData’ и удалите ячейки, которые не включены в область печати
    • почтовый индекс модифицированного xml к копии xlsx
  5. Конвертируйте xlsx файл используя PHPExcel или другая библиотека
1
По вопросам рекламы [email protected]