Работа с данными файла Excel в паскале

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
VoRoNiCh
Сообщения: 2
Зарегистрирован: 03 мар 2007, 17:03

03 мар 2007, 18:01

задача такая: в эксэле дано сколько то значений Х и столько же значени У расчитанные по какой-то функции что нам не известна. Вводим число (значение Х0), паскаль обращается к эксэлю и находит между какими значениями Х оно стоит, используя эти значения мы находим значени У0 по каким то трем формулам, тоесть будет 3 найденных значения У0. к сожаления я пока их не знаю, напишу позже. Для меня пока главная задача как через паскаль обратиться содержимому файла эксэля, и проводить какие то расчеты.
Аватара пользователя
Колядин Максим
Сообщения: 285
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

04 мар 2007, 00:26

VoRoNiCh писал(а):как через паскаль обратиться содержимому файла эксэля, и проводить какие то расчеты.
К файлу эксэля, да и вообще, к большинству файлов обращаются как к типу text.

Код: Выделить всё

uses crt]
Открой лист Excel'я блокнотом, и посмотри с какого столбца и с какой строки начинается определённое значение. Например, у меня параметр A1 со 161-го символа на 4-той строке, чтобы изменить его нужно:
[code]
{S2-изменяемое значение}
uses crt;
var excel,before,after: text;
s,s2: string;
i: integer;
pos: longint;
begin
clrscr;
write('A1 = '); readln(s2);
write('Подожди..');
pos:=(1024*4)+161;
assign(before, '1.txt'); rewrite(before);
assign(excel, 'excel.xls'); reset(excel);
for i:= 1 to pos do begin
read(excel,s);
write(before,s);
end;
close(before);
assign(after,'2.txt'); rewrite(after);
for i:= (pos+5) to (32767) do                  {Длинна предидущего значения}
while not eof(excel) do begin                      {А1 была равна 5 (пяти)            }
read(excel,s);
write(after,s);
end;
close(after);
close(excel);
assign(excel, 'excel.xls'); rewrite(excel);
assign(before,'1.txt'); reset(before);
while not eof(before) do begin
read(before,s);
write(excel,s);
end;
close(before);
write(excel,s2);
assign(after, '2.txt'); reset(after);
while not eof(after) do begin
read(after,s);
write(excel,s);
end;
close(excel);
gotoxy(1,2);
write('Выполнено успешно!');
readkey;
end.
Это один из вариантов, вроде должен работать. Но у тебя могут возникнуть проблемы при изменении Excel документа...
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

05 мар 2007, 09:35

&quot писал(а):К файлу эксэля, да и вообще, к большинству файлов обращаются как к типу text.
Скорее, как к бинарному. Изучаем форматы и структуры объектных файлов MSOffice. Не факт, что это именно то, что мы ищем.
It's a long way to the top if you wanna rock'n'roll
Ответить