【问题标题】:PHP Read and Write in MS WORDMS WORD 中的 PHP 读写
【发布时间】:2011-02-19 17:21:33
【问题描述】:

我想用PHP读/写word文档,

我知道 php 中有一个函数可以处理 COM 对象,我们可以使用它来读取和写入 word 文档,但是 COM 对象仅在 Windows 上可用,在 Linux 上不可用。

我的服务器正在运行 linux,客户端正在将他们的 docs/excel 表格上传到此服务器。

还有其他方法可以使用 php 读取 ms-excel/ms-word 文件吗?

【问题讨论】:

标签: php


【解决方案1】:

值得注意的是,微软不建议通过 COM 对象自动化 Office 文档:

Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时的行为和/或死锁。

尽管您可以创建没有 COM 对象的 .docx 文件,但是由于它们的 XML 基础(您可以为此使用 PHPDOCX)。这种方法的另一个优点是您不需要安装 Word 的本地副本(用于 .docx 文件),您也可以在 Linux 服务器上使用它(理论上,虽然我不确定 PHPDOCX 产品支持)。

【讨论】:

    【解决方案2】:

    查看phpexcel 和phpword。

    【讨论】:

      【解决方案3】:

      听起来是个坏主意,因为创建和阅读 word 文档的最佳方式是在 Windows 服务器上。

      对于 php,您想尝试使用 antiword 从 word97/2000 文件中提取文本。

      【讨论】:

        【解决方案4】:

        OpenTBS 可以使用模板技术读取和修改 PHP 中的 DOCX(和其他 OpenXML 文件)文档。

        无需临时文件,无需命令行,全部在 PHP 中。

        它可以添加或删除图片。创建的文档可以生成为 HTML 下载文件、保存在服务器上的文件或 PHP 中的二进制内容。

        它还可以合并 OpenDocument 文件(ODT、ODS、ODF、...)

        http://www.tinybutstrong.com/opentbs.php

        【讨论】:

          【解决方案5】:

          使用纯 PHP 代码创建/编写 MS RTF Word 文档

          使用这个免费的库:https://github.com/phprtflite/PHPRtfLite

          适用于 Windows、Linux 和 Mac OS

          在此处查看文档:http://sigma-scripts.de/phprtflite/docs/

          如果您现在想了解更多关于 Office 文件格式的信息,也请阅读此内容:

          https://joelonsoftware.com/2008/02/19/why-are-the-microsoft-office-file-formats-so-complicated-and-some-workarounds/

          <?php
          /* ------------------------------------------------------------- */  
          /* [Create MS Word RTF] Text to Microsoft Word #php #class #word */
          /* ------------------------------------------------------------- */  
          
          // SET HEADLINE & CONTENT
          $headline = 'A Microsoft Word File created with PHP'; // H1-H6 TAGS WILL NOT WORK
          $content = '
          <bullet> Text <br><bullet> Text <br><bullet> Text <br><br>
          <u>This is Lorem Ipsum Dolore Text</u>.
          <strong>This is Lorem Ipsum Dolore Text</strong>.
          <em>This is Lorem Ipsum Dolore Text</em>.
          <b>This is Lorem Ipsum Dolore Text</b>.
          <i>This is just another paragraph</i>. ';
          // TAGS THAT WILL WORK: <bullet>, <br>, <strong>, <b>, <i>, <em> and <u>
          
          // SET VAR
          $dir = dirname(__FILE__);
          
          // PHPRtfLite
          require_once $dir . '/PHPRtfLite/lib/PHPRtfLite.php';
          PHPRtfLite::registerAutoloader();
          $rtf = new PHPRtfLite();
          $sect = $rtf->addSection();
          
          // ADD CONTENT AS HTML
          // 'Arial' 'Verdana' 'Tahoma' Times New Roman' etc.
          // TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER, TEXT_ALIGN_JUSTIFY
          $sect->writeText(
            $headline, 
            new PHPRtfLite_Font(24, 'Arial'), 
            new PHPRtfLite_ParFormat(PHPRtfLite_ParFormat::TEXT_ALIGN_CENTER)
          );                                                 
          $sect->writeText(
            $content, 
            new PHPRtfLite_Font(12, 'Arial'), 
            new PHPRtfLite_ParFormat(PHPRtfLite_ParFormat::TEXT_ALIGN_LEFT)
          );
          
          // SAVE RTF DOCUMENT
          $rtf->save($dir . '/' . basename(__FILE__, '.php') . '.rtf');
          

          【讨论】:

            猜你喜欢
            • 2010-09-16
            • 2010-09-16
            • 2018-12-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-03-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多