PHP 创建和格式化 Microsoft Word 文档
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17531889/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PHP create and format a Microsoft Word document
提问by Tyler H
I was looking to use PHP to create a Microsoft Word document. After looking online I found that most of the offered solutions were to just create an .doc that had not formatting done whatsoever. I was wondering what would be the best way to create a Word document that I could format in PHP i.e. change font, color, size, etc. for my company. I am guessing that some sort of library would be needed for this. Any responses would be greatly appreciated.
我希望使用 PHP 来创建 Microsoft Word 文档。在网上查看后,我发现大多数提供的解决方案只是创建一个没有进行任何格式化的 .doc。我想知道创建 Word 文档的最佳方法是什么,我可以在 PHP 中设置它的格式,即为我的公司更改字体、颜色、大小等。我猜这需要某种图书馆。任何答复将不胜感激。
回答by ivanlanin
回答by dave
Build the content for the dynamic Word document in HTML, along with some Office specific style properties.
以 HTML 格式构建动态 Word 文档的内容,以及一些 Office 特定的样式属性。
Public Sub Page_Load(sender as Object, e as EventArgs)
Dim strBody As New System.Text.StringBuilder("")
strBody.Append("<html " &
"xmlns:o='urn:schemas-microsoft-com:office:office' " &
"xmlns:w='urn:schemas-microsoft-com:office:word'" &
"xmlns='http://www.w3.org/TR/REC-html40'>" &
"<head><title>Time</title>")
//The setting specifies document's view after it is downloaded as Print instead of the default Web Layout
strBody.Append("<!--[if gte mso 9]>" &
"<xml>" &
"<w:WordDocument>" &
"<w:View>Print</w:View>" &
"<w:Zoom>90</w:Zoom>" &
"<w:DoNotOptimizeForBrowser/>" &
"</w:WordDocument>" &
"</xml>" &
"<![endif]-->")
strBody.Append("<style>" &
"<!-- /* Style Definitions */" &
"@page Section1" &
" {size:8.5in 11.0in; " &
" margin:1.0in 1.25in 1.0in 1.25in ; " &
" mso-header-margin:.5in; " &
" mso-footer-margin:.5in; mso-paper-source:0;}" & _
" div.Section1" &
" {page:Section1;}" &
"-->" &
"</style></head>")
strBody.Append("<body lang=EN-US style='tab-interval:.5in'>" &
"<div class=Section1>" & _
"<h1>Time and tide wait for none</h1>" &
"<p style='color:red'><I>" &
DateTime.Now & "</I></p>" &
"</div></body></html>")
// Force this content to be downloaded as a Word document with the name of your choice
Response.AppendHeader("Content-Type", "application/msword")
Response.AppendHeader ("Content-disposition", "attachment;filename=myword.doc")
Response.Write(strBody)
End Sub
回答by The Dude
dave's code works for me. I have used it like this in my PHP code. This opens in print layout.
戴夫的代码对我有用。我在我的 PHP 代码中像这样使用了它。这将在打印布局中打开。
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>
<head>
<title>Time</title>
<!--[if gte mso 9]>
<xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>100</w:Zoom>
<w:DoNotOptimizeForBrowser/>
</w:WordDocument>
</xml>
<![endif]-->
<style>
@page Section1 {
size: 8.5in 11.0in;
margin: 1.0in 1.25in 1.0in 1.25in ;
mso-header-margin: .5in;
mso-footer-margin: .5in;
mso-paper-source: 0;
}
div.Section1 {
page: Section1;
}
</style>
回答by Jake Bown
You can do it using plain text and variables whilst not having it open in HTML - see here http://www.jakebown.com/?p=77
您可以使用纯文本和变量来完成它,而无需在 HTML 中打开它 - 请参阅此处http://www.jakebown.com/?p=77