Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

Передать русккий текст в 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 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
1-29386
ARTSOFT
2004-02-01 22:14
2004.02.10
MP3-component


1-29362
Frot
2004-01-29 12:40
2004.02.10
Как сделать чтоб в Edit первая буква была заглавной?


11-29292
mike.dld
2003-05-23 21:08
2004.02.10
Посмотрите, как оно


3-29255
Burafchick
2004-01-18 22:51
2004.02.10
Как установить QReport в Delphi 7


1-29397
Андрей Л.
2004-02-01 10:26
2004.02.10
Проводник на форме