Delphi - Добавить специальный символ в Excel - PullRequest
2 голосов
/ 06 июля 2011

Я пытаюсь вставить символ - белый квадрат (Unicode 25A1) в таблицу Excel, но получаю ошибки:

Я попробовал следующее безрезультатно:

1. WorkSheet.Cells[CurrRow,CurrCol].Formula := '=ChrW(&H25A1)';  

2. WorkSheet.Cells[CurrRow,CurrCol].Formula := '=Char(25A1)';  

И запуск макроса тоже не помог, как он сказал '?'

Действительно надеюсь, что кто-то может мне помочь с этим

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Интерфейс COM для Excel - это API-интерфейс Unicode.Excel работает внутренне со строками Unicode.Просто передайте свой специальный символ в Excel в Delphi WideString.Вам не нужна формула Excel.

WorkSheet.Cells[CurrRow,CurrCol].Value := WideString(#$25A1);

Если вы используете версию Delphi для Unicode (например, 2009 или более позднюю), тогда вы можете включить символ Unicode в свой исходный код, если вы делаете исходный кодфайл UTF-8.

WorkSheet.Cells[CurrRow,CurrCol].Value := WideString('□');

Среда IDE преобразует исходный файл в UTF-8, если вы начнете добавлять не-ANSI символы.

1 голос
/ 06 июля 2011

Возможно, вы получаете сообщение об ошибке, которое в Excel будет отображаться в ячейке как #VALUE!.Для одного вы кормите его шестнадцатеричной строкой, пока она хочет нормальное число.Для другого вы даете функции Char число вне ее допустимого диапазона.В справке Excel для CHAR специально указывается:

число от 1 до 255, указывающее, какой символ вы хотите.Символ из набора символов, используемого вашим компьютером

Похоже, что в Excel нет функции ChrW.И я не могу найти функцию, которая принимает числовое значение и преобразует его в эквивалентный символ Unicode.

При просмотре справки способ вставки символов Unicode заключается в использовании числового значения с клавиатуры (удерживаявниз) или с помощью меню: Вставка, текст, символ, Юникод (шестнадцатеричный).Вы должны быть в состоянии смоделировать ввод с клавиатуры, и меню должно быть доступно через модель COM, но не уверен, будет ли выбор символов тогда.

Сказав все это, если вы ищете способвставьте текст Unicode из Delphi в ячейки Excel, тогда все, что вам нужно сделать, это:

WorkSheet.Cells[CurrRow, CurrCol].Value := Chr(#$25A1);

И я использую только функцию Delphi (!) Chr, потому что вы это сделали.Вы можете просто ввести присвоить текстовую строку, содержащую нужный вам символ, ячейке в источнике Delphi.

...