Я не тестировал 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
результат показывает:
размеры шрифта, цвета шрифта, полужирный / курсив, границы, центрирование, фон ячейки / штриховка / цвета, раскрывающиеся списки со значениями, сохраняются
Кнопки потеряны
Фигуры (например, линии, стрелки, текстовые поля) потеряны
Графики потеряны