使用PHP创建和格式化Microsoft Word文档

6

我想使用PHP创建一个Microsoft Word文档。在网上搜索后,我发现大多数提供的解决方案只是创建一个没有任何格式设置的.doc文件。我想知道在PHP中创建一个可以进行格式设置的Word文档的最佳方法是什么,比如更改字体、颜色、大小等。 我猜需要使用某种库来实现这一点。非常感谢您的回复。


这方面有很多资源。例如:在PHP中读写MS Word文件 - Pekka
你最好的选择可能是创建一个HTML文件,然后将其转换为docx文件。例如,请参见使用PHP将html转换为word / excel / PowerPoint - Pekka
这些类可以免费供商业公司使用吗? - Tyler Hilbert
取决于你指的是哪一个。 - Pekka
PHPWord能够免费用于商业公司吗? - Tyler Hilbert
4个回答

5
你可以使用PHPWord。它是一个PHP库,可以创建带有一些格式的DOCX文档。

3

将动态 Word 文档的内容构建为 HTML 格式,并添加一些 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

你的代码对我有效。这是我在我的PHP代码中使用的方式。顺便问一下,Section1是什么?它是一个类名吗? - stackflow

0

dave的代码对我很有效。我在我的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>

-1

3
请注意,仅链接的答案不被鼓励,SO的答案应该是搜索解决方案的终点(而不是引用的另一个中转站,这往往会随时间变得过时)。请考虑在此处添加一个独立的概要,将链接作为参考。 - kleopatra
链接已损坏。 - jor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接