我搜索了很多,但无法找到答案,所以我们走了:
我需要创建一些将从其他两个中提取数据的工作表。我已经创造了这两个,但其他人让我很头疼......
以下是代码:
foreach ($result_user as $user)
{
$objPHPExcel->getActiveSheet()
->setCellValue('A' . $i, iconv('ISO-8859-1','UTF-8',$user['name']))
->setCellValue('B' . $i, iconv('ISO-8859-1','UTF-8',$user['email']))
->setCellValue('C' . $i, '=VLOOKUP(' . $user['manager'] . ';source_users!A:B;2;FALSE)')
->setCellValue('D' . $i, '=COUNTIF(source_shops!A2:A' . $total_shops . ';A' . $i . ')')
->setCellValue('E' . $i, '=source_users!B' . $i)
->setCellValue('F' . $i, '=G' . $i . '*100/H' . $i);
$i++;
}
* $total_shops
是" source_shops"的大小。片。
C和D列根本不起作用。打开创建的xlsx文件时,我收到此错误:
" Excel在' filename.xlsx'中找到了不可读的内容。你想要_____吗 恢复"这个工作簿的内容?如果你相信的来源 在此工作簿中,单击是。"
点击"是"后,会显示:
" Excel能够通过修复或删除来打开文件 难以理解的内容。删除记录:来自的公式 /xl/worksheets/sheet3.xml part。"
当文件最终打开时,这两列用" 0" s填充。如果从字符串中删除等号,则生成文件,打开时没有错误,其余的公式就在那里!如果你把等号返回(在Excel中),一切正常。
我找到了类似的主题,但似乎没有什么能解决我的问题...
答案 0 :(得分:1)
根据开发人员文档的4.6.4节:
将公式写入单元格在Excel文件中,公式始终是 存储,因为它们将出现在英文版的Microsoft Office中 Excel和PHPExcel以此格式在内部处理所有公式。 这意味着以下规则成立:
- 小数分隔符为'。' (周期)
- 函数参数分隔符为','(逗号)
- 矩阵行分隔符为';' (分号)
- 必须使用英文函数名称
这与使用哪种语言版本的Microsoft Office Excel创建Excel文件无关。
唯一的例外是,如果您使用区域设置来处理英语/美国公式与具有;
分隔符和区域设置语言函数名称的本地化公式名称之间的转换
你使用;
作为函数参数分隔符,你没有引用你的字符串(例如你的VLOOKUP中的$ user ['manager'])