Excel 文件无法保存在 PHP COM 应用程序中
Excel file can not be saved in PHP COM Application
我们在 PHP 中保存 excel 张纸时遇到问题。
简约代码:
// R: is a Ramdisk
$filename = 'R:\sheets\ExcelFile_123.xlsx';
$application = new COM("Excel.Application", null, CP_UTF8);
$workbook = $application->Workbooks->Open($filename);
$workbook->save();
保存调用将抛出 com_exception 消息“来源:Microsoft Excel 描述:Das Dokument wurde nicht gespeichert。”
(德语为“文档未保存。”)
当打开工作簿的任何工作表并且我试图再次保存工作表时,我得到另一个 com_exception 消息“来源:Microsoft Excel 描述:Zugriff auf 'ExcelFile_123.xlsx' verweigert。”
(德语为“访问 'ExcelFile_123.xlsx' 被拒绝。”)
我检查了以下内容:
- Excel 文件没有任何指向其他工作表的链接。
- Excel 文件没有写保护。
- 可以通过 PHP 将文件写入磁盘(PHP 对文件和文件夹具有写入权限)
- Excel 文件未共享。
- 没有其他Excel应用程序已打开。
我切换了上面提到的每个设置,甚至尝试了 https://support.microsoft.com/en-us/help/2589410/access-denied-error-message-when-you-save-a-workbook-to-a-unc-share-in
不合适的解决方案:
- 使用另一个 PHP Excel 库(Excel 文件在很大程度上取决于计算和条件)
- 使用 Microsoft Grap
- 使用微软 Office 365
- 使用 Google 电子表格
问题:
为什么我不能保存 excel 文件,即使我有写入权限?
系统信息
- 服务器:Windows 2012 R2
- 网络服务器:Apache 2.4
- PHP:5.5.14(我知道安全隐患)
PHP com_dotnet 分机:
com_dotnet\
COM support enabled\
DCOM support disabled\
.Net support enabled\
Directive Local Value Master Value\
com.allow_dcom 0 0\
com.autoregister_casesensitive 1 1\
com.autoregister_typelib 0 0\
com.autoregister_verbose 0 0\
com.code_page no value no value\
com.typelib_file no value no value
您的 PHP 申请 运行ning 可能是用户个人资料的问题。请查看办公产品服务器端办公自动化的文章(里面列出了常见问题)。要查看问题是否确实是帐户问题,我会尝试将 Apache (PHP) 下的帐户更改为 运行 您的帐户(或者只是启动 Apache 命令行以查看是否可以解决问题)。
https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office
https://theether.net/download/Microsoft/kb/288367.html
顺便说一句,还有(付费)替代方案可以进行计算和 运行 服务器端。
我们在 PHP 中保存 excel 张纸时遇到问题。
简约代码:
// R: is a Ramdisk
$filename = 'R:\sheets\ExcelFile_123.xlsx';
$application = new COM("Excel.Application", null, CP_UTF8);
$workbook = $application->Workbooks->Open($filename);
$workbook->save();
保存调用将抛出 com_exception 消息“来源:Microsoft Excel 描述:Das Dokument wurde nicht gespeichert。” (德语为“文档未保存。”)
当打开工作簿的任何工作表并且我试图再次保存工作表时,我得到另一个 com_exception 消息“来源:Microsoft Excel 描述:Zugriff auf 'ExcelFile_123.xlsx' verweigert。” (德语为“访问 'ExcelFile_123.xlsx' 被拒绝。”)
我检查了以下内容:
- Excel 文件没有任何指向其他工作表的链接。
- Excel 文件没有写保护。
- 可以通过 PHP 将文件写入磁盘(PHP 对文件和文件夹具有写入权限)
- Excel 文件未共享。
- 没有其他Excel应用程序已打开。
我切换了上面提到的每个设置,甚至尝试了 https://support.microsoft.com/en-us/help/2589410/access-denied-error-message-when-you-save-a-workbook-to-a-unc-share-in
不合适的解决方案:
- 使用另一个 PHP Excel 库(Excel 文件在很大程度上取决于计算和条件)
- 使用 Microsoft Grap
- 使用微软 Office 365
- 使用 Google 电子表格
问题: 为什么我不能保存 excel 文件,即使我有写入权限?
系统信息
- 服务器:Windows 2012 R2
- 网络服务器:Apache 2.4
- PHP:5.5.14(我知道安全隐患)
PHP com_dotnet 分机:
com_dotnet\
COM support enabled\
DCOM support disabled\
.Net support enabled\
Directive Local Value Master Value\
com.allow_dcom 0 0\
com.autoregister_casesensitive 1 1\
com.autoregister_typelib 0 0\
com.autoregister_verbose 0 0\
com.code_page no value no value\
com.typelib_file no value no value
您的 PHP 申请 运行ning 可能是用户个人资料的问题。请查看办公产品服务器端办公自动化的文章(里面列出了常见问题)。要查看问题是否确实是帐户问题,我会尝试将 Apache (PHP) 下的帐户更改为 运行 您的帐户(或者只是启动 Apache 命令行以查看是否可以解决问题)。
https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office
https://theether.net/download/Microsoft/kb/288367.html
顺便说一句,还有(付费)替代方案可以进行计算和 运行 服务器端。