将VB的Format()转换为PHP

时间:2010-01-10 12:24:36

标签: php excel com excel-vba vba

在PHP中,我正在尝试使用COM()读取Excel文件:

$rrc_app = new COM("Excel.application");
$rrc_workbook = $rrc_app->Workbooks->Open($filename);
$rrc_worksheet = $rrc_workbook->Worksheets('Top sheet');
$rrc_worksheet->activate;

我尝试提取包含“时间”值的单元格的值:

$review_time = $rrc_worksheet->Range("C30")->value;

但是,它返回一个十进制数字:

0.604166666667

我知道我可以使用VB的Format()函数,但我不知道从PHP中的哪个对象调用它。以下内容:

$review_time = Format($rrc_worksheet->Range("C30")->value, "hh:mm:ss");

给出:

Fatal error: Call to undefined function Format() in C:\xampplite\htdocs\pmc\index.php on line 40

您是否碰巧知道如何使用PHP调用此Format()函数?

提前致谢

2 个答案:

答案 0 :(得分:2)

FormatVBA.String模块的一个函数,因此它不是Excel COM库的一部分,我不确定它是否可以通过COM访问。

但是,您可以使用Text属性而不是Value:这将返回格式化字符串(根据Excel中的单元格格式)而不是基础值:

$review_time = $rrc_worksheet->Range("C30")->Text;

编辑:如果单元格格式不正确,您可以在阅读Text属性(未经测试)之前更改格式:

$rrc_worksheet->Range("C30")->Select();
$rrc_app->Selection->NumberFormat = "hh:mm:ss";
$review_time = $rrc_worksheet->Range("C30")->Text;

答案 1 :(得分:1)

Format()看起来像Visual Basic function。您不一定可以通过正在与之通信的Excel COM对象 - 只有当该对象在某处声明它时才可用。与COM对象通信时,VB函数范围不会自动导入PHP。

你能试试$rrc_app->Format()吗?

如果没有任何作用,我建议弄清楚时间值代表什么(我相信你可以在这里找到SO)并用PHP转换它。