ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

通过PHP COM读取Excel文件时编码问题

2019-06-29 06:25:43  阅读:242  来源: 互联网

标签:php encoding excel utf-8 com-interop


我正在阅读一个带有PHP COM实用程序的excel电子表格,一切正常,但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) – >值给出的值是正确的编码还是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需要该解决方案.

解决方法:

正如@rc所指出的,我们需要在COM构造函数中指定codepage属性以获得正确编码的数据.

$ExlApp = new COM ( "Excel.Application", NULL, CP_UTF8 );

通过更改脚本中的上述行,可以正确显示数据.

标签:php,encoding,excel,utf-8,com-interop
来源: https://codeday.me/bug/20190629/1323859.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有