PHPexcel не может читать стили из xls

Я не могу читать стили из xls с помощью PHPexcel. Я часто ищу решение, но везде пишу решения для написания xls, но мне нравится это читать. Мне особенно нравится зачеркивание, но он не может прочитать ни эту, ни любую другую информацию о стиле. Мой код следующий, он читает все данные правильно, но не более того. Я уверен, что сделать текст в стиле XLS.

require_once 'PHPExcel.php';
$filepath = "path/to/your/xls/file.xls";
$inputFileType = PHPExcel_IOFactory::identify($filepath);

$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($filepath);

$total_sheets = $objPHPExcel->getSheetCount();
$allSheetName = $objPHPExcel->getSheetNames(); 
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0) ;
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);

$headingsArray = $objWorksheet->rangeToArray('A1:' . $highestColumn . '1', null, true, true, true);
$headingsArray = $headingsArray[1];

print_r( $objWorksheet->toArray() );

У кого-нибудь есть идея?

Спасибо

1 ответ

Решение

PHPExcel вполне способен считывать стили из файлов xls: вы действительно пытались получить детали стилей из ячейки, потому что в вашем коде нет тестов, чтобы проверить, что стили были прочитаны?

$objWorksheet->toArray()

читает содержимое из ячеек как простые скалярные значения PHP.

Чтобы определить стиль ячейки, вам нужно прочитать детали стиля этой ячейки.

например

$cellHasStrikeThrough = $objPHPExcel->getActiveSheet()->getStyle('B2')
    ->getFont()->getStrikethrough();

Документация API показывает все детали для чтения информации о стилях, такие как цвета, заливки, шрифты, границы и т. Д.

РЕДАКТИРОВАТЬ

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

$objPHPExcel->getActiveSheet()->getCellValue('B2');

объект rich text будет возвращен. Затем можно выполнить итерацию по каждому блоку (или прогону) объекта rich text, проверяя стиль для этого блока.

Другие вопросы по тегам