无法使用 Powebuilder OLE 在 msword 表单字段中插入换行符
我有一个用 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
I have an application written in Powerbuilder 11.5 that automatically fills in form fields of a Word document (MS Word 2003).
The Word document is protected so only the form fields can be altered.
In the code below you can see I use char(10) + char(13)
to insert a newline, however in the saved document all I see is 2 little squares where the characters should be.
I've also tried using "~r~n"
, this also just prints 2 squares.
When I fill in the form manually I can insert newlines as much as I want.
Is there anything else I can try? Or does anybody know of a different way to fill in word forms using 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
The f_inserttextatbookmark is as follows:
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的问题的一部分是回车符是 char(13),换行符是 char(10),因此要在 Windows 和 DOS 中创建 CRLF,您通常需要创建 char(13) + char(10)。如果这些不正常,许多程序就会停止运行。然而,“~r~n”应该已经为你生成了它。
我已经成功了(为了简洁起见,我进行了转换,因此可能只能接近来纠正):
也许您可以尝试其他Word OLE命令,看看它是否与特定命令有关。 (在定义换行符之后,我抓住了救命稻草。)
祝你好运,
特里
Part of your problem is that carriage return is char(13), and line feed is char(10), so to make a CRLF in Windows and DOS you usually need to make char(13) + char(10). If these are out of order, many programs will balk. However, "~r~n" should have produced that for you.
I have success with (and I'm converting for brevity so it might only be close to correct):
Maybe you can try other Word OLE commands to see if it's something to do with the specific command. (After the definition of the line break, I'm grasping at straws.)
Good luck,
Terry
听起来这可能是 Unicode/Ansi 字符转换的事情。
对于它的价值,你可以尝试这个...
http://www.rgagnon.com /pbdetails/pb-0263.html
希望有帮助。
Sounds like it may be a Unicode/Ansi character conversion thing.
for what its worth you could try this ...
http://www.rgagnon.com/pbdetails/pb-0263.html
Hope it helps.
我没有使用表单字段,但我可以使用 TypeText 和“~n”将换行符从 PowerBuilder 插入到 Word 文档中。也许你只需要“~n”。
I'm not using form fields, but I am able to insert newlines into a Word document from PowerBuilder using TypeText and "~n". Maybe you just need "~n".