无法使用Powebuilder OLE在msword表单字段中插入换行符

时间:2010-07-14 13:18:17

标签: ms-word ole powerbuilder

我有一个用Powerbuilder 11.5编写的应用程序,它自动填写Word文档的表单字段(MS Word 2003)。

Word文档受到保护,因此只能更改表单字段。

在下面的代码中,您可以看到我使用char(10) + char(13)插入换行符,但是在保存的文档中,我看到的只是2个小方块,其中的字符应该是。
我也尝试使用"~r~n",这也只是打印2个方格。

当我手动填写表单时,我可以根据需要插入换行符。

还有什么我可以尝试的吗?或者有人知道使用Powerbuilder填写单词表单的不同方法吗?

//1 Shipper
ls_value = ids_form_info.object.shipper_name[1]

if not isnull(ids_form_info.object.shipper_address2[1]) then
 ls_value += char(10) + char(13) + ids_form_info.object.shipper_address2[1]
end if

if not isnull(ids_form_info.object.shipper_address4[1]) then
 ls_value += char(10) + char(13) + ids_form_info.object.shipper_address4[1]
end if

if not isnull(ids_form_info.object.shipper_country[1]) then
 ls_value += char(10) + char(13) + ids_form_info.object.shipper_country[1]
end if

if lnv_word.f_inserttextatbookmark( 'shipper', ls_value ) = -1 then return -1

f_inserttextatbookmark如下:

public function integer f_inserttextatbookmark (string as_bookmark, string as_text, string as_fontname, integer ai_fontsize);
if isnull(as_text) then return 0
    iole_word = create OLEOBJECT

    iole_word.connectToNewobject( "word.application" )

    iole_word.Documents.open( <string to word doc> )

 iole_word.ActiveDocument.FormFields.Item(as_bookmark).Result = as_text

return 1
end function

3 个答案:

答案 0 :(得分:2)

你的部分问题是回车是char(13),换行是char(10),所以要在Windows和DOS中制作CRLF,你通常需要制作char(13)+ char(10)。如果这些都不正常,很多程序都会犹豫不决。但是,“~r~n”应该为你产生。

我取得了成功(我为了简洁而转换,所以它可能只是关闭才能纠正):

lole_Word.ConnectToNewObject ("Word.Application")
...
lole_Word.Selection.TypeText (ls_StringForWord)

也许你可以尝试其他Word OLE命令来查看它是否与特定命令有关。 (在断线的定义之后,我正在抓住稻草。)

祝你好运,

特里

答案 1 :(得分:0)

听起来它可能是Unicode / Ansi字符转换的事情。

你有什么价值可以试试这个...

http://www.rgagnon.com/pbdetails/pb-0263.html

希望它有所帮助。

答案 2 :(得分:0)

我没有使用表单字段,但是我可以使用TypeText和“~n”从PowerBuilder将新行插入到Word文档中。也许你只需要“~n”。