我有一个用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
答案 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”。