Колядин Максим » 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 документа...
[quote="VoRoNiCh"]как через паскаль обратиться содержимому файла эксэля, и проводить какие то расчеты.[/quote]
К файлу эксэля, да и вообще, к большинству файлов обращаются как к типу [b]text[/b].
[code]
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.
[/code]
Это один из вариантов, вроде должен работать. Но у тебя могут возникнуть проблемы при изменении Excel документа...