【问题标题】:Excel file can not be saved in PHP COM ApplicationExcel 文件无法保存在 PHP COM 应用程序中
【发布时间】: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

【问题讨论】:

    标签: php excel com ole


    【解决方案1】:

    这可能是您的 PHP 应用程序在其下运行的用户配置文件的问题。请查看办公产品服务器端办公自动化的文章(已列出常见问题)。要查看问题是否实际上是帐户问题,我会尝试将 Apache (PHP) is running 下的帐户更改为您的帐户(或简单地启动 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虽然可以读写文档,但是PHP打开和控制的Excel应用却不能。
    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 2014-08-30
    • 2022-08-22
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多