如何使用PHP搜索和替换MS Word文档中的文本片段

时间:2019-02-08 09:42:59

标签: php replace ms-word

主要目标: 使用PHP在Microsoft Word中创建文档(带有表)。

遇到的严重问题: 打电话:

$document->Range->Find->Execute( ... );  // causes ERROR.

我得到有关以下信息:行,文件,源:未知,描述:未知;

我该怎么做(使用PHP在Microsoft Word中进行操作):

  • 我从文件中打开文档模板(成功)
  • 我使用
  • 将纯文本插入文档中
    ->Range->InsertAfter(  "whatever text needed to be inserted" ); // (success)
  • 我定义了一个新的Range对象:
    $range = $document->Range( x, y );
  • 并将范围转换为表格(成功)
    $Table1 = $range->ConverToTable( wdSeparateByTabs, 1, 2, 30, wdTableFormatNone, false, false, false, false, false, false, false, false, false, wdAutoFitWindow, wdWord9ListBehavior );
//  with
    wdSeparateByTabs = 1
    wdTableFormatNone = 0
    wdAutoFitWindow = 2
    wdWord9ListBehavior = 1
  • 尽管事实是我传递了number_of_rows = 1(第二个参数),但该表看起来还是预期的。

  • 我想要的下一步是使Word查找并替换字符串:

$rng = $Table1->Range;
$find = $rng->Find;
$find->Execute( "text to find", false, false, false, false, false, null, wdFindContinue, false, "text to be replaced with", wdReplaceAll, null, null, null, null );

一些系统信息:

  • 所有虚拟机上的Oracle VM VirtualBox 5.2.0
  • Windows XP sp3
  • Apache 2.2.6
  • PHP 5.2.9
  • Microsoft Office Word 2002(10.2627)

最终思想和观念

  • 当我注释掉-> Find-> Execute(...)部分时,一切都按预期完成
  • 我用纯文本创建一个表格,其中的单元格用字符分隔(在我的示例中为制表符),因此我不能用多行(\ x0A)来创建一个单元格,因为Word也使用\ x0A作为分隔符(经过测试);
  • 我需要使用多行单元格(用\ x0A或\ x0B分隔)
  • 想法是使用html的
    行分隔符插入纯文本,将其转换为表格,并在创建表格时将其替换为\ x0A或\ x0B
  • 我很确定我可以以不同的方式(方式)实现所需的目标
  • 我已经在VisualStudioExpress2010中使用C#做了非常相似的测试,但是所有的工作都按预期进行,没有像使用PHP那样出现错误

打电话给我怎么办

->Range->Find->Execute(...);

引起错误吗?

编辑: 我不使用框架,只计划Word并储备PHP

$word = new COM( 'Word.Application' );
$document = $word->Documents->Add( ); //or
$document = $word->Documents->Open( 'template_file.doc' );

0 个答案:

没有答案