我正在使用PHP COM实用程序读取Excel电子表格,一切都正常,除了电子表格中有一些单元格含有不同语言的数据。当我通过PHP Com读取这些数据时,它显示为???????
$ExlApp = new COM ( "Excel.Application" );
$workbook = $ExlApp->Workbooks->Open ( 'f:\dev\htdocs\excel\testfile.xlsx' );
$worksheet = $workbook->worksheets ( 1 );
$done = false;
$row_index = 1;
while ( $done == false ) {
$english = $worksheet->cells ( $row_index, 1 )->value;
$dari = $worksheet->cells ( $row_index, 2 )->value;
if ($english != '') {
$row_index ++;
echo "<div style='float:left;width:420px'>".$english."</div><div>".$dari."</div>";
} else {
$done = true;
}
}
$workbook->close ();
我已检查页面编码并设置为UTF-8。当我打开原始Excel文件时,它显示正确的文本,但是当我从PHP COM中读取时,编码丢失了。有没有人有解决这个问题的方法?
编辑
我如何确保Excel提供的值 $worksheet->cells ( $row_index,2)->value 呈正确编码?或者说,Excel中是否有任何属性可以通过PHP COM设置,以便它返回UTF-8数据?
我已经通过在PHP中使用mb_detect_encoding函数来检查从Excel单元格返回的值的编码,并且它给出的是ASCII,而不是应该给出的UTF-16或UTF-8。似乎Excel没有以正确的编码提供值。
这是我用此脚本阅读的Excel文件: http://asimishaq.com/myfiles/testfile.xlsx 请注意,仅使用PHP COM-INTEROP解决方案。
Content-type
头部或元标签。 - Marc B