Будет ли PHPSpreadsheet преобразовывать xls в xlsx и сохранять форматирование? - PullRequest
0 голосов
/ 15 декабря 2018

Я нахожусь в ознакомительной части спецификаций нашего проекта и не нашел однозначного ответа относительно того, может ли PHPSpreadsheet преобразовать .xls в .xlsx и сохранить форматирование, такое как границы таблицы.

Из этого вопроса я вижу, что существует отдельный импорт для чтения / записи и для типа формата файла.Этот пример демонстрирует использование различных модулей для форматов файлов для чтения / записи:

<?php 

require 'vendor\autoload.php';

use \PhpOffice\PhpSpreadsheet\Reader\Xls;
use \PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$xls_file = "Example.xls";

$reader = new Xls();
$spreadsheet = $reader->load($xls_file);

$loadedSheetNames = $spreadsheet->getSheetNames();

$writer = new Xlsx($spreadsheet);

foreach($loadedSheetNames as $sheetIndex => $loadedSheetName) {
    $writer->setSheetIndex($sheetIndex);
    $writer->save($loadedSheetName.'.xlsx');
}

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

1 Ответ

0 голосов
/ 17 декабря 2018

Я не тестировал PhpSpreadsheet (из-за требования Composer), , но FWIW PhpExcel (предшественник PhpSpreadsheet) делает работу довольно легко и да, он сохраняет большинство форматирования.

Вот пример сценария преобразования с использованием PhpExcel:

<?php

    $xls_to_convert = 'test.xls';

    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);

    define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');

    date_default_timezone_set('America/Vancouver');

    require_once dirname(__FILE__) . '/PHPExcel/Classes/PHPExcel/IOFactory.php';

    $objPHPExcel = PHPExcel_IOFactory::load(dirname(__FILE__) . '/' . $xls_to_convert);

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save(str_replace('.xls', '.xlsx', $xls_to_convert));

Краткое сравнение моей тестовой xls электронной таблицы с xlsx результат показывает:

  1. размеры шрифта, цвета шрифта, полужирный / курсив, границы, центрирование, фон ячейки / штриховка / цвета, раскрывающиеся списки со значениями, сохраняются

  2. Кнопки потеряны

  3. Фигуры (например, линии, стрелки, текстовые поля) потеряны

  4. Графики потеряны

...