PHP Excel Reader: получить зачеркнутые / зачеркнутые значения - PullRequest
1 голос
/ 10 ноября 2009

Я ищу способ анализа значения зачеркнутых / зачеркнутых ячеек в листе Excel, используя, если возможно, скрипт PHP. Ячейки, которые зачеркнуты или не содержат простых текстовых значений (без формул и прочего).

Я попытался использовать http://code.google.com/p/php-excel-reader/ и несколько других скриптов. Но я не нашел ни одного PHP-скрипта, который бы анализировал это конкретное значение (зачеркнутый), и я безуспешно пытался добавить эту функцию анализа в php-excel-reader.

Я попытался добавить следующее:

function lineTrought($row,$col,$sheet=0) {
    return $this->fontProperty($row,$col,$sheet,'strikethrough');
}

А также добавить некоторый код к этой части кода разбора (обозначен **):

            case SPREADSHEET_EXCEL_READER_TYPE_FONT:
                    $height = v($data,$pos+4);
                    $option = v($data,$pos+6);
                    $color = v($data,$pos+8);
                    $weight = v($data,$pos+10);
                    $under  = ord($data[$pos+14]);
                    **$strikethrough  = v($data,$pos+16);**
                    $font = "";
                    // Font name
                    $numchars = ord($data[$pos+18]);
                    if ((ord($data[$pos+19]) & 1) == 0){
                        $font = substr($data, $pos+20, $numchars);
                    } else {
                        $font = substr($data, $pos+20, $numchars*2);
                        $font =  $this->_encodeUTF16($font); 
                    }
                    $this->fontRecords[] = array(
                            'height' => $height / 20,
                            'italic' => !!($option & 2),
                            'color' => $color,
                            'under' => !($under==0),
                            'bold' => ($weight==700),
                            **'strikethrough'=>$strikethrough,**
                            'font' => $font,
                            'raw' => $this->dumpHexData($data, $pos+3, $length)
                            );
                    break;

Но я не могу найти правильные данные, которые указывают значение зачеркивания. v ($ data, $ pos + 16) неверно, и я пробовал кучу других вещей без какого-либо успеха.

Если это невозможно с библиотекой PHP, есть идеи о том, как я могу проанализировать свой XLS с помощью скрипта Python или Perl и затем переключить данные на PHP?

Кажется, что Spreadsheet :: ParseExcel-0.55 из CPAN-скрипта Perl может работать, но мое основное приложение - PHP, поэтому мне нужно записать результат в файл и проанализировать его обратно в PHP или что-то вроде этого.

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

также проверить: http://www.codeplex.com/PHPExcel

он говорит, что может читать файлы Excel. Я использовал его в основном для письма, поэтому я не знаю, в какой степени поддерживается чтение.

0 голосов
/ 19 июня 2014

С PHPExcel (http://phpexcel.net, официальный URL) вы можете прочитать значение стиля из ячейки. Для зачеркивания это что-то вроде этого.

$cell->getStyle()->getFont()->getStrikethrough().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...