我正在尝试将符号 - 白色方块(Unicode 25A1)插入Excel电子表格但不断出现错误:
我试着跟着无济于事:
1. WorkSheet.Cells[CurrRow,CurrCol].Formula := '=ChrW(&H25A1)';
2. WorkSheet.Cells[CurrRow,CurrCol].Formula := '=Char(25A1)';
运行宏并没有帮助,因为它说'?'
真的希望有人可以帮我解决这个问题
答案 0 :(得分:3)
Excel的COM接口是Unicode API。 Excel在内部使用Unicode字符串。只需将您的特殊字符传递给Delphi WideString中的Excel即可。您不需要Excel公式。
WorkSheet.Cells[CurrRow,CurrCol].Value := WideString(#$25A1);
如果您使用的是Unicode版本的Delphi(即2009或更高版本),那么如果您将源代码设为UTF-8文件,则可以在源代码中包含Unicode字符。
WorkSheet.Cells[CurrRow,CurrCol].Value := WideString('□');
如果您开始添加非ANSI字符,IDE会将您的源文件转换为UTF-8。
答案 1 :(得分:1)
您可能收到一条错误消息,其中Excel将在单元格中显示为#VALUE!
。对于一个你正在喂它一个十六进制字符串,而它想要一个正常的数字。对于另一个,您给Char函数一个超出其可接受范围的数字。 CHAR的Excel帮助具体说明:
指定1到255之间的数字 你想要哪个角色。该 字符来自字符集 由您的计算机使用
Excel似乎没有任何ChrW
功能。我无法找到任何带有数值的函数,并将其转换为与Unicode字符等价的函数。
通过帮助,您插入Unicode字符的方式是使用键盘中的数值(按住alt)或使用菜单:插入,文本,符号,Unicode(十六进制)。您应该能够模拟键盘输入,并且菜单应该可以通过COM模型获得,但不确定是否可以选择字符。
说了这么多,如果你正在寻找一种方法将Delphi中的Unicode文本插入到Excel单元格中,那么你需要做的就是:
WorkSheet.Cells[CurrRow, CurrCol].Value := Chr(#$25A1);
我只使用Delphi(!)Chr功能,因为你做到了。您只需输入一个文本字符串,其中包含Delphi源中单元格所需的字符。