Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 28.05.2013, 20:43   #1
KyTuH
Пользователь
 
Регистрация: 23.05.2012
Сообщений: 19
Восклицание Работа с Excel в Delphi

Всем доброе утро, день и вечер))
На моей форме стоит Label1 и Button1. При нажатии на Button1 программа должна открывать файл fio.xls, брать число(i) из ячейки B2(от 2 до 9), по этому числу брать текст из ячейки A[i]( Например i=2, значит берем A2) и записывать в Label1. После этого в ячейку B2 нужно перезаписать значение на единицу больше. Вот мой код:
Код:
var
  Form1: TForm1;
  Ap : Variant;
  i, n: integer;
  s: string;
  num: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Ap.Workbooks.Open('c:\excel\fio.xls');
num:= Ap.Range['b2'];
i:=num;
while i<=9 do
begin
s := Ap.Range['a[i]'];
label1.Caption:=s;
i:=i+1;
if i=9 then begin
i:=1;
end;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Ap := CreateOleObject('Excel.Application');
end;

end.
Код написан не до конца, так как выдает ошибку на строчке "s := Ap.Range['a[i]'];" все картинки приложены ниже!

Без цикла, если вместо переменной i использовать конкертное число, все работает, но выводит одну запись, а мне нужно, чтобы при нажатии он выводил следующую запись... Вот такая вот неразбериха. В чем-то я путаюсь, а в чем не могу понять, голова кипит, сроки поджимают.
Изображения
Тип файла: jpg Безымянный.jpg (22.8 Кб, 88 просмотров)
Тип файла: jpg Безымянный1.jpg (42.7 Кб, 83 просмотров)
Тип файла: jpg Безымянный2.jpg (29.2 Кб, 88 просмотров)
Тип файла: jpg Безымянный4.jpg (79.4 Кб, 90 просмотров)
KyTuH вне форума Ответить с цитированием
Старый 29.05.2013, 06:26   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
s := Ap.Range['a'+IntToStr(i)];
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi работа с Excel all_is_fear Помощь студентам 5 17.07.2012 18:31
Работа с Excel из Delphi Ky3Heu, Общие вопросы Delphi 2 12.10.2011 11:53
Delphi 7 работа с Excel Alkifr Помощь студентам 0 30.10.2010 00:31
Delphi 7 работа с Excel Alkifr Помощь студентам 0 29.10.2010 21:31