Я ищу способ анализа значения зачеркнутых / зачеркнутых ячеек в листе 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 или что-то вроде этого.