【发布时间】:2021-02-11 23:35:56
【问题描述】:
我们在 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
- 使用 Microsoft 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
【问题讨论】: