我想使用PHP读取/写入word文档,
我知道php中有一个函数可以使用COM对象来读取和写入word文档,但COM对象只能在Windows上使用,而不能在Linux上使用。
我的服务器正在运行linux,客户端正在将他们的docs / excel表上传到此服务器。
还有其他方法可以使用php读取ms-excel / ms-word文件吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
值得注意的是,Microsoft建议不要通过COM对象自动化Office文档:
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定Office在此环境中运行时的行为和/或死锁。
虽然你可以创建没有COM对象的.docx文件,但是由于它们的XML基础(你可以使用PHPDOCX)。此方法的另一个优点是您不需要安装Word的本地副本(对于.docx文件),您也可以在Linux服务器上使用它(理论上,虽然我不确定PHPDOCX产品支持那个)。
答案 2 :(得分:1)
听起来不错,因为创建和阅读word文档的最佳方法是在Windows服务器上。
对于php,你想尝试使用antiword来从word97 / 2000文件中提取文本。
答案 3 :(得分:0)
OpenTBS可以使用模板技术在PHP中读取和修改DOCX(和其他OpenXML文件)文档。
不需要临时文件,没有命令行,全部都是PHP。
可以添加或删除图片。创建的文档可以作为HTML下载,保存在服务器上的文件或PHP中的二进制内容生成。
它还可以合并OpenDocument文件(ODT,ODS,ODF,...)
答案 4 :(得分:0)
使用此免费的库:https://github.com/phprtflite/PHPRtfLite
可在Windows,Linux和Mac OS上运行
在这里查看文档:{{3}}
如果您现在对Office文件格式有更多了解,还请阅读以下内容:
http://sigma-scripts.de/phprtflite/docs/
<?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');