gpt4 book ai didi

matlab - 如何通过 ActiveX 接口(interface)将 MATLAB 中的 Unicode 文本发送到 Word 文档中?

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:17 27 4
gpt4 key购买 nike

我正在使用 MATLAB 在 Windows 上以编程方式创建 Microsoft Word 文档。一般来说,这个解决方案工作正常,但它在处理非 ASCII 文本时遇到问题。例如,拿这段代码:

wordApplication = actxserver('Word.Application');
wordApplication.Visible = 1;
wordApplication.Documents.Add;
selection = wordApplication.Selection;
umbrella = char(9730);
disp(umbrella)
selection.TypeText(umbrella)

命令窗口正确显示伞形字符,但该字符在 Word 文档中是“方框中的问号”缺失字符符号。我可以将命令窗口中的字符剪切并粘贴到 Word 中,这样该字符确实可以在该字体中使用。

TypeText 方法必须采用 ASCII。有关于如何为其他语言的类似操作设置 Unicode 标志的资源,但我不知道如何将它们翻译成我在 MATLAB 中可用的语法。

说明:我的用例是发送一个未知的 Unicode 字符串(字符数组),而不仅仅是一个字符。如果能够一次发送所有内容,那将是最理想的。这是更好的示例代码:

% Define a string to send with a non-ASCII character.
umbrella = char(9730);
toSend = ['Have you seen my ' umbrella '?'];
disp(toSend)

% Open a new Word document.
wordApplication = actxserver('Word.Application');
wordApplication.Visible = 1;
wordApplication.Documents.Add;

% Send the text.
selection = wordApplication.Selection;
selection.TypeText(toSend)

我希望我可以简单地设置 encoding文档本身,但这似乎没有帮助:

wordApplication = actxserver('Word.Application');
wordApplication.Visible = 1;
wordApplication.Documents.Add;
disp(wordApplication.ActiveDocument.TextEncoding)
wordApplication.ActiveDocument.TextEncoding = 65001;
disp(wordApplication.ActiveDocument.TextEncoding)
selection = wordApplication.Selection;
toSend = sprintf('Have you seen my \23002?');
selection.TypeText(toSend)

最佳答案

方法一、对单个字符有效(原题)

取自here :

umbrella = 9730; %// Unicode number of the desired character
selection.InsertSymbol(umbrella, '', true); %// true means use Unicode

第二个参数指定字体(因此您可以使用 'Arial' 等),而 '' 显然意味着使用当前字体。第三个参数'true'表示使用Unicode。

方法2.对单个字符有效(原题)

一种不太直接的方式,取自here :

umbrella = 9730; %// Unicode number of the desired character
selection.TypeText(dec2hex(umbrella));
selection.ToggleCharacterCode;

方法三、对字符串有效(编辑题)

如果您不介意使用剪贴板,您可以立即处理一个字符串:

umbrella = char(9730);
toSend = ['Have you seen my ' umbrella '?'];
clipboard('copy', toSend); %// copy the Unicode string contained in variable `toSend`
selection.Paste %// paste it onto the Word document

关于matlab - 如何通过 ActiveX 接口(interface)将 MATLAB 中的 Unicode 文本发送到 Word 文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com