【发布时间】:2014-06-19 21:27:17
【问题描述】:
我正在寻找方法来解析 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 库,是否知道如何使用 Python 或 Perl 脚本解析 XLS,然后将数据切换到 PHP?
CPAN Perl 脚本中的 Spreadsheet::ParseExcel-0.55 似乎可以工作,但我的主要应用程序是 PHP,所以我需要将结果写入文件并用 PHP 或类似的东西解析回来。
【问题讨论】:
-
删除线文本的外观如何?它被编码了吗?二进制?