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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2013, 20:17   #1
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
Лампочка Работа с Excel из делфи

Добрый вечер! У меня проблема с считывание и обработкой информации в ячейках эксель, суть в том что я выбираю значение в combobox при нажатии кнопки оно должно сравнить значение ячейки и элемента combobox и вывести какуе то информацию для начало я выставил на сообщение но, компиляция нормальная а при нажатии выбивает ошибку! Помогите разобраться! (приведен код кнопки)
Код:
procedure TForm3.Button1Click(Sender: TObject);
   var A, B: string;
      XS: variant;
begin
  XS:= CreateOleObject('Excel.Application.7');
  XS.Workbooks.Open('C:\Documents and Settings\Admin\Рабочий стол\NKI\КПЗ\программа\222.xls',0,false);  // не отображается таблица
  XS.Sheet := XS.Book.WorkSheets[1]; // Pervaya vkladka
  XS.DisplayAlerts := False; // отключение запроса на сохранение
  A:=XS.sheet.Range(XS.sheet.cells['2:2']);
  B:=inttostr(combobox2.itemindex);
  if A = B then
  showmessage ('Variant')
  else showmessage ('No variant');
  XS.Application.Quit;
end;

Последний раз редактировалось Stilet; 03.01.2013 в 21:35.
VinDiz вне форума Ответить с цитированием
Старый 03.01.2013, 20:30   #2
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Зачем это?

Код:
 XS.Sheet := XS.Book.WorkSheets[1];
Делайте уж тогда Sheet переменной типа variant, присваивайте ей нужный лист и работайте с этой переменной дальше (либо же обходитесь без этого):

Код:
Sheet := XS.WorkBooks[1].WorkSheets[1];
a := Sheet.Range....
Ну и Вы явно неправильно используете Range. Вы можете получать значения из ячейки разными способами, например:

Код:
a := Sheet.Range['B2']
a := Sheet.Cells[2,2]
a := Sheet.Cells[2,2].Value
Xardas вне форума Ответить с цитированием
Старый 03.01.2013, 20:37   #3
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию

спасибо щас буду пробовать!
VinDiz вне форума Ответить с цитированием
Старый 03.01.2013, 21:15   #4
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию

написал все как вы сказали, ошибка прежняя осталась.....
Код:
procedure TForm3.Button1Click(Sender: TObject);
   var A, B: string;
     Sheet, XS: variant;
begin
  XS:= CreateOleObject('Excel.Application.7');
  XS.Workbooks.Open('C:\Documents and Settings\Admin\Рабочий стол\NKI\КПЗ\программа\222.xls',0,false);  // не отображается таблица
  Sheet:= XS.WorkBooks[1].WorkSheets[1]; // Pervaya vkladka
  XS.DisplayAlerts := False; // отключение запроса на сохранение
  A:=inttostr(sheet.range['B2']);
  B:=inttostr(combobox2.itemindex);
  if A = B then
  showmessage ('Variant')
  else showmessage ('No variant');
  XS.Application.Quit;
end;
VinDiz вне форума Ответить с цитированием
Старый 03.01.2013, 21:40   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ошибка прежняя
и текст ошибки конечно же засекречен спецслужбами?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.01.2013, 21:43   #6
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
и текст ошибки конечно же засекречен спецслужбами?
??????????? ??????? ????????? ? ??????????? вот такого вида и потом

Press OK to ignore and risk data corription
Press Cancel to kill the program
VinDiz вне форума Ответить с цитированием
Старый 03.01.2013, 21:49   #7
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Пройдите отладчиком и скажите на какой строке вылезает ошибка. Нет Делфей под рукой
Xardas вне форума Ответить с цитированием
Старый 03.01.2013, 21:53   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

А че тут гадать, вот она:

[CODE] A:=XS.sheet.Range(XS.sheet.cells['2:2']);
/CODE]

Получаем диапазон ячеек, который записан в том же файле в ячейке 2:2 (или В2). А если там пусто?

Да, и потом, А объявлена строкой...
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 03.01.2013, 22:12   #9
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Код:
Excel.Application.7
Вот еще возможный источник ошибки. Используйте Excel.Application.

Sciv, таким образом значение в ячейке не получить, об этом уже было сказано выше. А если бы там было пусто, то исключение бы получили из текущей программы при попытке привести число к строке, а тут, если я не ошибаюсь, исключение "вылезает" из excel.exe либо же при попытке создать OLE-объект, но сделать проверку ячейки на наличие непустого значения не помешает

Последний раз редактировалось Xardas; 03.01.2013 в 22:18.
Xardas вне форума Ответить с цитированием
Старый 03.01.2013, 22:15   #10
VinDiz
Пользователь
 
Регистрация: 14.01.2012
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
А че тут гадать, вот она:

[CODE] A:=XS.sheet.Range(XS.sheet.cells['2:2']);
/CODE]

Получаем диапазон ячеек, который записан в том же файле в ячейке 2:2 (или В2). А если там пусто?

Да, и потом, А объявлена строкой...
там по второму коду смотри! я исправил! файл по условию не будит пустой
той строки А:-.... в том что я исправил написал по правильному
VinDiz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа в делфи Iluha_k Общие вопросы Delphi 5 11.07.2012 11:26
Связать Access, Excel и Word в Делфи 7 Lyuka Sin Фриланс 0 28.05.2012 17:40
данные из си отредактировать в делфи и отправить в excel novenkaya Общие вопросы Delphi 4 11.04.2012 20:17
Работа в Делфи Queit72ru Помощь студентам 0 05.12.2011 16:23
Excel диаграмма из делфи anytim Помощь студентам 2 02.01.2011 14:12