【问题标题】:Word OLE Automation - delete first page and manipulate header and footerWord OLE 自动化 - 删除首页并操作页眉和页脚
【发布时间】:2011-03-19 13:47:45
【问题描述】:

我正在使用 PHP 来启动 Word 自动化和操作 Word 文档,但我想它可以用任何其他语言完成。我需要做的很简单,我需要删除第一页并添加页眉和页脚。

这是我的代码:

 $word = new COM('word.applicantion');
 $word->Documents->Open('xxx.docx');
 $word->Documents[1]->SaveAs($result_file_name, 12);

有样品吗?

【问题讨论】:

  • 对象模型并不像您想象的那样真正具有“页面”的概念。 Word 文档是一个流文档,因此通过删除第一页,您将拥有一个新的第一页,其中包含以前第二页的所有内容。其次,当您说添加页眉/页脚时,您是在寻找标准页眉/页脚还是在寻找奇数/偶数和首页页眉/页脚?
  • @Otaku,我确实想删除第一页并有一个新的第一页作为第二页。我还想为所有页面添加一个 .jpg 作为页脚,并添加一些文本作为页眉。
  • @aviv:以下是否回答了您的问题?
  • @Otaku,我将尝试在 PHP 中实现代码,看看它是否有效。如果它会起作用,我会签署它作为可接受的答案。我会照顾到这周结束。无论如何,这对我有很大帮助,非常感谢你提交它!
  • @aviv: 只是想看看 PHP 实现的进展情况以及是否需要进一步的帮助。

标签: com automation ms-word ms-office ole


【解决方案1】:

这是您可以在 VBA 中执行此操作的方式。这很可能很容易移植到 PHP。

Sub RemoveFirstPageAndAddHeaderFooter()
    Dim d As Document
    Set d = ActiveDocument
    Dim pageOne As Range
    Set pageOne = d.Bookmarks("\page").Range
    pageOne.Select
    Selection.Delete
    d.Sections(1).Headers(1).Range.Text = "Some text"
    d.Sections(1).Footers(1).Range.InlineShapes.AddPicture "C:\beigeplum.jpg", False, True
End Sub

注意...InlineShapes.AddPicture - 您有责任确保图片尺寸正确。如果您想对此进行更多控制,您可以使用.Footers(1).Shapes.AddPicture,因为它可以让您设置宽度/高度、顶部/左侧等。

【讨论】:

    【解决方案2】:

    试试 { $word = new COM("word.application") //$word = new COM("C:\x.docx"); or die("无法创建 word 的实例");

            //bring word to the front
            $word->Visible = 1;
    
            //open a word document
            $word->Documents->Open("file.docx");
    
            // remove first page
            $range = $word->ActiveDocument->Bookmarks("\page");
            $range->Select();
            $word->Selection->Delete();
    
            //save the document as docx
            $word->Documents[1]->SaveAs("modified_file.docx", 12); // SaveAs('filename', format) // format: 0 - same?, 1 - doc?, 2 - text,  4 - text other encoding
        }
        catch(Exception $e)
        {
            echo "error class.document.php - convert_to_docx: $e 20100816.01714";
        }
    
        //close word
        if($word)
            $word->Quit();
    
        //free object resources
        //$word->Release();
        $word = null;
    

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2012-01-03
      相关资源
      最近更新 更多