首页 > 解决方案 > 为什么 in2csv 不使用非 ascii 表标题转换我的 XLSX 文件?[CentOS x64]

问题描述

我的问题是我有一个带有非 ascii 工作表名称 ( Общий отчет) 的 Excel XLSX 文件,我正在尝试使用 in2csv 工具将其转换为 CSV。exec我使用函数从 PHP 运行它。

在我的本地机器(Windows 10 x64)上,一切正常。我正在尝试在 CsntOS x64 VDS 上运行它,当我exec从终端启动我的 PHP 脚本(用于调用 in2csv 工具)时 - 它也可以正常工作。但是当我从 cron ( php -f ./task.php) 运行它时 - 它不会产生错误,但生成的 CSV 文件是空白的!

我做了一些测试,检查运行 PHP 脚本的用户和组,python 默认编码,但仍然没有任何线索。请帮忙!

这是转换文件的命令:

in2csv --locale ru_RU --sheet "Общий отчет" --encoding windows-1251 "prices.xlsx" > "prices.csv"

标签: phpexcelcsvxlsxcsvkit

解决方案


最后我想通了。

PHPexec函数中的命令应如下所示:

exec('/usr/bin/in2csv --locale ru_RU --sheet "Общий отчет" --encoding windows-1251 "/home/admin/www/html/prices.xlsx" > "/home/admin/www/html/prices.csv"');

cron 命令应如下所示:

/usr/bin/php -f /home/admin/www/html/task.php

也就是说,您需要提供所有可执行文件的完整路径,这将在终端和 Cron 中都有效!


推荐阅读