Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Вниз

Передать русккий текст в Excel   Найти похожие ветки 

 
Chris   (2003-12-03 18:54) [0]

Необходимо передать строку в ячейку Excel"я. Использую команду
ExcelDoc.WorkSheets[1].Cells(1, 3):= "Бухгалтерия";
Но из-за каких-то системных настроек в Excel"е появляется строка


 
AbrosimovA   (2003-12-04 08:42) [1]

А шрифт ячейки какой?


 
Chris   (2003-12-04 09:29) [2]

Допустим, Times New Roman. Хотя, в принципе, разницы нет никакой.


 
Alex Konshin   (2003-12-04 09:29) [3]

Переводи строку в UNICODE и результат уже присваимай.


 
Chris   (2003-12-04 11:11) [4]

А как пишется функция перевода?


 
Bers   (2003-12-04 15:18) [5]

Соответсвие что-то типа:
а \u0430
б \u0431
в \u0432
г \u0433
д \u0434
е \u0435
ж \u0436
з \u0437
и \u0438
й \u0439
к \u043a
л \u043b
м \u043c
н \u043d
о \u043e
п \u043f
р \u0440
с \u0441
т \u0442
у \u0443
ф \u0444
х \u0445
ц \u0446
ч \u0447
ш \u0448
щ \u0449
ъ \u044a
ы \u044b
ь \u044c
э \u044d
ю \u044e
я \u044f

А \u0410
Б \u0411
В \u0412
Г \u0413
Д \u0414
Е \u0415
Ж \u0416
З \u0417
И \u0418
Й \u0419
К \u041a
Л \u041b
М \u041c
Н \u041d
О \u041e
П \u041f
Р \u0420
С \u0421
Т \u0422
У \u0423
Ф \u0424
Х \u0425
Ц \u0426
Ч \u0427
Ш \u0428
Щ \u0429
Ъ \u042a
Ы \u042b
Ь \u042c
Э \u042d
Ю \u042e
Я \u042f

а дальше уж сам... либо функцию придумай либо в массив загони :)

С Уважением, Андрей.


 
AbrosimovA   (2003-12-04 15:33) [6]


> Chris (04.12.03 09:29) [2]
> Допустим, Times New Roman. Хотя, в принципе, разницы нет
> никакой.


Я вопрос не зря задал. К примеру до записи ячейка имеет шрифт Symbol. Ты переключаешь на русскую раскладку и вводишь любое слово. Вопрос на засыпку: Что ты увидишь в ячейке после ввода?

Попробуй вышесказанное проделать в Excel(не программно, а ручками) с Times New Roman, какой в этом случае получишь результат. Возможно ещё предположить, что Times New Roman у тебя без кириллицы.

А шрифт ячеек по-умолчанию в Сервис->Параметры...->Вкладка "Общие"->Стандартный шрифт.


 
Alex Konshin   (2003-12-04 20:29) [7]

>Bers (04.12.03 15:18) [5]
>Соответсвие что-то типа:
Ну зачем же так? Есть же функция MultiByteToWideChar.
Там есть засада в том, что нужно Variant с этим полученным значением врукопашную. Насколько я понимаю, реально проблема связана с давно известной проблемой с неправильным выбором codepage при переводе в Unicode в Delphi. Поэтому-то и приходится это делать вручную.
Если сам не сможешь победить, напиши мне на e-mail, я попытаюсь найти дома кусок кода, где я это делал.


 
VICTOR_   (2003-12-06 12:43) [8]

1. Попробуй
ExcelDoc.WorkSheets[1].Cells(1, 3).Font.Name := "Arial CYR";


 
Black King   (2003-12-06 23:17) [9]

>VICTOR_ (06.12.03 12:43) [8]
Не поможет ето дело.
Я тоже пытаюсь бороца с етой проблемой, но пока безрезультатно.
Остаётся надеяться, что этот вариант поможет : Alex Konshin © (04.12.03 20:29) [7]
если не, то остаёца запись напрямую в файл без всяких посредников.


 
Alex Konshin   (2003-12-07 18:00) [10]

Я не нашел (не помню уже, где я это делал).
Но суть там такая:

const CodePage = 1033;
var v: Variant;
ws : WideString;

len := Length(s);
SetLength(ws,len); // overallocate, trim later
nDestLen := MultiByteToWideChar( CodePage, 0, PChar(s), len, PWideChar(ws), len );
if len<0 then len := 0;
SetLength(ws,len);

v := ws;

Как-то так. Может и наврал где-то, не проверял.


 
Alex Konshin   (2003-12-07 18:02) [11]

А наврал в CodePage, для нас должно быть 1251.


 
nikkie   (2003-12-07 18:28) [12]

>с давно известной проблемой с неправильным выбором codepage при переводе в Unicode в Delphi

что за проблема - можно поподробнее?


 
Alex Konshin   (2003-12-08 01:22) [13]

Проблема в том, что при переводе используется codepage, которая назначена для thread, что не всегда то, что нужно нам.


 
Artem03   (2003-12-08 10:20) [14]

Предлагаю следующее решение проблемы (за 2 года ни одного глюка).
Достучаться до Excel"а, как COM-сервера.
Excel:=CreateOLEObject("Excel.Application");
Excel.WorkSheets.Item[1].Activate; // Активный первый лист
Excel.Cells[Row,Column].Text:="Любой текст"; // Для текста
Excel.Cells[Row,Column].Value:=Value; // Любой тип (дата, число, но только не строка).


 
BlackKing   (2003-12-08 16:01) [15]

Artem03 (08.12.03 10:20) [14]

Eto potomu chto na vseh mashinah Region bil Russia. Ustanovi drugoj, budet pervij gljuk za 2 goda :o)


 
BlackKing   (2003-12-08 16:23) [16]

Alex Konshin, spasibo tebe ogromnoje!!!
Vsjo rabotajet kak i polozheno:o)


 
Alex Konshin   (2003-12-08 18:22) [17]

Еще раз посмотрелна то, что написал, нашел еще ошибку:
len := MultiByteToWideChar( CodePage, 0, PChar(s), len, PWideChar(ws), len );



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
3-29200
Sergey konuhov
2004-01-19 12:32
2004.02.10
Как вуполнить Refresh одной записи в открытом IBDataSet


6-29502
smit_
2003-12-07 23:51
2004.02.10
Как определить входящий звонок на модем?


11-29288
mike.dld
2003-05-19 20:38
2004.02.10
MonthCalendar


14-29542
Knight
2004-01-20 21:24
2004.02.10
Загружать список пользователей с сервера...


1-29410
Daniel
2004-01-31 18:32
2004.02.10
Смысл строки Type(Object1) := Object2;





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский