Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/39: Рейтинг темы: голосов - 39, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 27

Автоматическая выборка значений переменных из Excel в Delphi 7

12.04.2011, 13:44. Показов 7721. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста найти ошибку. Нужно осуществить автоматическую выборку значений входных переменных из Excel в Delphi 7 для использования полученных значений в последующих расчетах. Привожу фрагмент кода программы, где пытался осуществить это с использованием цикла. После ввода номера строки с кнопки Button1 должны выбираться значения из конкретной строки базы данных Excel. Значения переменных размещены по столбцам.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
k:=StrToInt(Edit1.Text);
label35.Caption:=IntToStr(k);
for i:=1 to k do
begin
Excel := CreateOleObject('Excel.Application');
Excel.Workbooks.Open['D:\База.xls'];
Excel.Visible := False;
C:=Excel. Cells[i, 1];
V:=Excel. Cells[i, 4];
Z:=Excel.Сells[i, 2];
T:=Excel.Cells[i, 3];
E:=Excel.Cells[i, 5];
O:=Excel.Cells[i, 6];
label1.Caption:=FloatToStr(C);
label3.Caption:=FloatToStr(V);
label4.Caption:=FloatToStr(Z);
label5.Caption:=FloatToStr(T);
label32.Caption:=FloatToStr(E);
label34.Caption:=FloatToStr(O);
Excel.ActiveWorkbook.Close;
end;
end;
После запуска компиляции выдается ошибка «Could not convert variant of type (Dispatch) into type (Double). Process Stopped.
Буду очень признателен если поможете разобраться в этой проблеме. Я считаю, что выборку и перенос значений базы данных Excel можно осуществить из Delphi 7. Но нужно найти ошибку. Заранее спасибо всем кто откликнется.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2011, 13:44
Ответы с готовыми решениями:

Формула Excel. Выборка значений по строкам и столбцам
Помогите научить ексель понимать, Как суммировать значения в одном столбце при выполнении условия в другом.... Создал примерную таблицу...

Выборка значений в промежутке дат ADOQuery, TimeDataPicker, Delphi
Не получается выборка по заданному диапазону дат. Необходимо выводить записи с датами между TimeDataPicker1 и TimeDataPicker2, но почему-то...

Помогите построить таблицу значений функции двух переменных в Excel
Помогите построить таблицу значений функции двух переменных f(x,y) Функция: y/x-4/x2 Границы по x,y : Шаг по x,y:0.2 Хотя бы...

25
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
13.04.2011, 16:45
Студворк — интернет-сервис помощи студентам
Все работает, как часы. Создал форму. Бростл на нею OpenDialog. Организовал две кнопки.
Первая кнопка - открывает Excel - документ. Привожу ее обработчик
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var ST: string;
begin
  OpenDialog1.Filter := 'Exel (*.xls)|*.xls|Все файлы(*.*)|*.*';
  OpenDialog1.Title := 'Загрузка файла - источника';
  if OpenDialog1.Execute = false then Exit;
  ST := OpenDialog1.FileName;
  Excel := CreateOleObject('Excel.Application');
  Excel.Workbooks.Open(ST);
  Excel.Application.WindowState := 1;
  Excel.Visible := true;
  WorkBook := Excel.WorkBooks.Item[1];
  WorkSheet := Workbook.Sheets.Item[1];
end;
Переменные описал в интерфейсной части (до implementation) вот так
Delphi
1
2
3
4
var
  Form1: TForm1;
  Excel, WorkBook, WorkSheet: variant;
implementation
В обработчике второй кнопки читаю данные
Delphi
1
2
3
4
5
6
procedure TForm1.Button2Click(Sender: TObject);
var C: real;
begin
  C := WorkSheet.Cells.Item[2,1].Value;
  ShowMessage(FloatToStr(C));// Это, чтобы показать на экране считанное значение
end;
При работе получаю значение 0,86
что соответствут присланному документу.
Чего еще надо? Построить цикл - дело техники!
1
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 27
13.04.2011, 17:02  [ТС]
Спасибо за помощь. Буду пробывать. Единственный вопрос по строке
'Exel (*.xls)|*.xls|Все файлы(*.*)|*.*'
Что указывать в этой строке, что программа успешно запускалась?
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
13.04.2011, 17:10
Цитата Сообщение от kolyan6100 Посмотреть сообщение
Что указывать в этой строке, что программа успешно запускалась?
Да при чем здесь запуск программы. Это диалог для открытия нужного файла источника.
1
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 27
13.04.2011, 17:49  [ТС]
Вы меня не поняли. Мне необходимо понять, что вводить в эту строку. Просто путь в скобках или что еще и как. Поясните пожалуйста.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
13.04.2011, 18:29
Сделайте все также, поймете!
1
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 27
13.04.2011, 22:57  [ТС]
все так сделал, как вы написали. После компиляции и еажатия на кнопу Button1 выскакивает ошибка Access Violation at address 00403EE0 in module '*.exe'. Write of adress 00000060. Программа запускается, но ошибка после нажатия на кнопку. После нажатия второй кнопки, в моем случае Button5 выскакивает ошибка Invalid Variant Operation". Вот фрагмент кода программы, который вводил:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
k: integer;
  Excel: variant;
  Worksheet: variant;
  Workbook: variant;
  OpenDialog1 : TOpenDialog;
  implementation
 
{$R *.dfm}
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
ST: string;
begin
OpenDialog1.Filter := 'Exel (*.xls)|*.xls|Все файлы(*.*)|*.*';
OpenDialog1.Title := 'Загрузка файла – источника’;
if OpenDialog1.Execute=false then Exit;
ST:=OpenDialog1.FileName;
Excel:=CreateOleObject('Excel.Application');
Excel.Workbooks.Open(ST);
Excel.Application.WindowState := 1;
Excel.Visible := true;
WorkBook := Excel.Workbooks.Item[1];
WorkSheet := Workbook.Sheets.Item[1];
end;
 
procedure TForm1.Button5Click(Sender: TObject);
var
i: integer;
begin
k:=StrToInt(Edit1.Text);
label35.Caption:=IntToStr(k);
for i:=1 to k do
C:=Worksheet.Cells.Item[i,1].Value;
V:=Worksheet.Cells.Item[i,4].Value;
Z:=Worksheet.Cells.Item[i,2].Value;
T:=Worksheet.Cells.Item[i,3].Value;
E:=Worksheet.Cells.Item[i,5].Value;
O:=Worksheet.Cells.Item[i,6].Value;
label1.Caption:=FloatToStr(C);
label3.Caption:=FloatToStr(V);
label4.Caption:=FloatToStr(Z);
label5.Caption:=FloatToStr(T);
label32.Caption:=FloatToStr(E);
label34.Caption:=FloatToStr(O);
Excel.Application.Quit;
end;
В чем я ошибся? Ошибки выскакивают после нажатия на кнопку в приложении. Спасибо за помощь.

Добавлено через 3 часа 1 минуту
Спасибо за помощь. Получилось. Нужно было Excel.Visible := true а не false. И Item убрал перед адресом ячеек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2011, 22:57

Автоматическая выборка
Перевел базу данных в SQL. Клиентская часть осталась в Access 2010. Ранее в форме заполнял поле , затем в поле (combobox) появлялись...

Автоматическая выборка
Здравствуйте. Перейду сразу к делу. На скриншоте указаны отсортированные по критерию организации, как можно вставить все (!!)...

Автоматическая выборка дня рождения
Доброго времени суток как сделать php коды выводя для рождения через for() вот скрины Так че та не выводит $mon = array();...

Автоматическая передача переменных в файл
Есть вот такой код. Как сделать так, чтобы при нажатии кнопки внутри условия автоматом выполнялась передача параметров, указанных в блоке...

Автоматическая инициализация переменных PHP
Подскажите какая настройка апача отвечает за автоматическую инициализацию, т.е. если встретил переменную PHP, которую не знает, просто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru