通过PHP COM读取Excel文件时编码问题
发布时间:2020-12-13 16:51:58 所属栏目:PHP教程 来源:网络整理
导读:我正在阅读一个带有 PHP COM实用程序的excel电子表格,一切正常,但Excel文件中有一些单元格有不同的语言数据.当我通过PHP Com读取这些数据时,它显示为??????? $ExlApp = new COM ( "Excel.Application" );$workbook = $ExlApp-Workbooks-Open ( 'f:devhtdoc
我正在阅读一个带有
PHP COM实用程序的excel电子表格,一切正常,但Excel文件中有一些单元格有不同的语言数据.当我通过PHP Com读取这些数据时,它显示为???????
$ExlApp = new COM ( "Excel.Application" ); $workbook = $ExlApp->Workbooks->Open ( 'f:devhtdocsexceltestfile.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) – >值给出的值是正确的编码还是Excel中有任何属性我可以通过PHP COM设置它以便以UTF形式返回数据-8? 我已经通过PHP中的mb_detect_encoding函数检查了Excel单元格返回的值的编码,它给出了ASCII,因为它必须给出UTF-16或UTF-8.看来excel没有给出正确编码的价值. 这是我用这个脚本阅读的Excel文件: 请注意,仅使用PHP COM-INTEROP需要该解决方案. 解决方法
正如@rc所指出的,我们需要在COM构造函数中指定codepage属性以获得正确编码的数据.
$ExlApp = new COM ( "Excel.Application",NULL,CP_UTF8 ); 通过更改脚本中的上述行,可以正确显示数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |