Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2011, 16:40   #1
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию Delphi 2009 и Excel, поменяли способ индексации ячеек

Работал я в Delphi 7, писал программу редактор техпроцессов, которая создавала отчёт в Excel. Но столкнувшись с Юникодом, я переписал её на Delphi 2009. В результате чего столкнулся с интересной вещью.

Вот так вот выводится инфа в Excel.
Код:
Uses ComObj

Var XL: variant; // Переменная в которой создаётся обьект EXCEL
Begin
XL := CreateOleObject('Excel.Application'); // Обьект EXCEL
XL.DisplayAlerts := True; // Чтоб не задавал вопрос о сохранении документа
XL.WorkBooks.Add; // Книжка
XL.Visible := true; // Видимая книжка
// Заполняем (так не работает)
XL.WorkBooks[1].WorkSheets[1].Cells[1, 'A'] := 'Раз';
XL.WorkBooks[1].WorkSheets[1].Cells[1, 'B'] := 'Два';
XL.WorkBooks[1].WorkSheets[1].Cells[1, 'C'] := 'Три';
// Заполняем (так работает)
XL.WorkBooks[1].WorkSheets[1].Cells[2, 1] := 'Раз';
XL.WorkBooks[1].WorkSheets[1].Cells[2, 2] := 'Два';
XL.WorkBooks[1].WorkSheets[1].Cells[2, 3] := 'Три';
End;
Но 2009 Делфи мне преподнесла сюрприз, отказавшись принимать старую версию индексации ячеек. Теперь она работает только с цифрами. Ради интереса проверил в 7 версии. Всё рабоает

Причём никаких ошибок не выдаёт. Просто ячейки не заполняются.

Эт я чтото не так сделал или мне придётся написать функцию аля "буква - число" чтоб мозг себе не ломать?

Честно говоря очень странно всё это....
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 07.05.2011, 16:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

чисто прикола ради, а проверьте, плиз:
Код:
var Addr1 : AnsiString;
...
Addr1 := 'A';
XL.WorkBooks[1].WorkSheets[1].Cells[1, Addr1] := 'Раз';
ну и способ два:
Код:
XL.WorkBooks[1].WorkSheets[1].Cells[1, AnsiString('A')] := 'Раз';

p.s. подозреваю, что дело как раз в Unicode строчках...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2011, 17:01   #3
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Хороший прикол, оба варианта работают ))
Даже если просто var Addr1 : String;

Осталось только строчек 50 мне в программе изменить
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по использованию циклов и индексации листов и ячеек. Zigizman Microsoft Office Excel 6 19.12.2010 19:17
запрет редактирования ячеек в excel из под delphi Ensoph Общие вопросы Delphi 0 08.10.2009 13:29
Выаод из DBGrid в EXcel (странный способ) Girl БД в Delphi 1 02.04.2009 08:47
Error in export data to Excel in Delphi 2009 Ikrik БД в Delphi 2 11.02.2009 06:12
Какой оптимальный способ в Delphi для перевода 10 системы счисления в 16с.с SERGOO Общие вопросы Delphi 5 25.05.2007 19:02