我希望能够上传MS Word文档并将其导出到我的网站中。
有没有办法实现这个目标?
答案 0 :(得分:20)
//FUNCTION :: read a docx file and return the string
function readDocx($filePath) {
// Create new ZIP archive
$zip = new ZipArchive;
$dataFile = 'word/document.xml';
// Open received archive file
if (true === $zip->open($filePath)) {
// If done, search for the data file in the archive
if (($index = $zip->locateName($dataFile)) !== false) {
// If found, read it to the string
$data = $zip->getFromIndex($index);
// Close archive file
$zip->close();
// Load XML from a string
// Skip errors and warnings
$xml = DOMDocument::loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
// Return data without XML formatting tags
$contents = explode('\n',strip_tags($xml->saveXML()));
$text = '';
foreach($contents as $i=>$content) {
$text .= $contents[$i];
}
return $text;
}
$zip->close();
}
// In case of failure return empty string
return "";
}
ZipArchive 和 DOMDocument 都在PHP中,因此您无需安装/包含/需要其他库。
答案 1 :(得分:3)
可以使用PHPDocX。
它几乎支持所有HTML CSS样式。此外,您可以使用模板通过replaceTemplateVariableByHTML
为HTML添加额外的格式。
PHPDocX的HTML方法也允许直接使用Word样式。你可以使用这样的东西:
$docx->embedHTML($myHTML, array('tableStyle' => 'MediumGrid3-accent5PHPDOCX'));
如果您希望所有表格都使用MediumGrid3-accent5 Word样式。 embedHTML方法及其模板版本(replaceTemplateVariableByHTML
)保留了继承,这意味着您可以使用预定义的Word样式并使用CSS覆盖其任何属性。
您也可以使用“JQuery type”选择器提取HTML的选定部分。
答案 2 :(得分:3)
这可能对您有用How to Convert Docx to HTML
答案 3 :(得分:1)
您可以使用Print2flash库将Word docx文档转换为html。这是我客户网站上的PHP摘录,它将文档转换为html:
NO
它将$ wordfile变量中指定路径的文档转换为$ htmlFile变量指定的html页面文件。保留所有格式,超链接和图表。您可以使用来自Print2flash SDK的更全面的样本来获取所需的const.php文件。
答案 4 :(得分:0)
如果您不拒绝REST API,则可以使用:
RawText的示例代码:
$result = $rawText -> parse($your_file)
答案 5 :(得分:0)
这是基于 David Lin 上面的回答的解决方法 删除 docx 的 xml 标签中的 "w:" 留下类似 Html 的标签
function readDocx($filePath) {
// Create new ZIP archive
$zip = new ZipArchive;
$dataFile = 'word/document.xml';
// Open received archive file
if (true === $zip->open($filePath)) {
// If done, search for the data file in the archive
if (($index = $zip->locateName($dataFile)) !== false) {
// If found, read it to the string
$data = $zip->getFromIndex($index);
// Close archive file
$zip->close();
// Load XML from a string
// Skip errors and warnings
$xml = new DOMDocument("1.0", "utf-8");
$xml->loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING|LIBXML_PARSEHUGE);
$xml->encoding = "utf-8";
// Return data without XML formatting tags
$output = $xml->saveXML();
$output = str_replace("w:","",$output);
return $output;
}
$zip->close();
}
// In case of failure return empty string
return "";
}