Жестокий облом от Borland...
Добавлено: 12 ноя 2006, 12:57
В своём первом топике на этом форуме я спрашивал, как мне сохранить массив в файл екселя, мне порекомендовали если я не хочу заморачиваться, записать в текстовый файл с разделителем табуляции и с расширением xls. Сначала так и сделал:
Но напоролся на грабли в траве: открыв файл, экзель не только не раскидал всё по ячейкам, но и вместо букв были иероглифы... (Office 2003 Professional)
Тогда я решил разобраться с нормальным сохранением в екзель.. получилось так:
Но и тут меня ждал облом, при компиляции мне сказали что, компилятор не знает такого понятия ( Undeclared Identifer) как CreateOleObject, Workbooks, и всё что есть в этом коде связоное с екзелем.
Поковырявшись в инете я наткнулся на совсем печальное известие о том, что в Delphi 8 (а я на нем и пишу), в библиотеку ComObj не добавляли описание и методы работы с такими вещами....
Так чтоже мне теперь делать, господа? Есть мысль что можно засунуть в него библиотеку от 7-ого делфи, но встанет ли она?
Или попытаться простым (первым примером) способом всё таки сохранять...?
Подскажите пожалуйста....
Код: Выделить всё
procedure TForm3.N2Click(Sender: TObject);
var t: textfile;
i:integer;
begin
if savedialog1.Execute then
begin
assignfile(t, savedialog1.FileName);
rewrite(t);
for i:=1 to stringgrid1.ColCount-1 do
write(t, stringgrid1.cells[i,2],'');
writeln(t);
for i:=1 to stringgrid1.ColCount-1 do
write(t, stringgrid1.cells[i,3],'');
writeln(t);
write(t, label2.caption,'',label3.caption,'',label4.caption);
closefile(t);
Тогда я решил разобраться с нормальным сохранением в екзель.. получилось так:
Код: Выделить всё
uses .........., comobj,........
.......
procedure TForm3.N2Click(Sender: TObject);
var
i:integer;
XL:Variant;
begin
if savedialog1.Execute then
XL:= CreateOleObject('Excel.Application');
XL.WorkBooks.Add;
XL.WorkBooks[1].WorkSheets[1].Name:='test';
for i:=1 to stringgrid1.ColCount-1 do begin
XL.WorkBooks[1].Sheets[1].Cells[i,1]:=stringgrid1.cells[i,2];
XL.WorkBooks[1].Sheets[1].Cells[i,1]:=stringgrid1.cells[i,3];
XL.Workbooks[1].SaveAs(savedialog1.filename);
end;
XL.DisplayAlerts := False;
XL.Quit;
XL := Unassigned;
Поковырявшись в инете я наткнулся на совсем печальное известие о том, что в Delphi 8 (а я на нем и пишу), в библиотеку ComObj не добавляли описание и методы работы с такими вещами....
Так чтоже мне теперь делать, господа? Есть мысль что можно засунуть в него библиотеку от 7-ого делфи, но встанет ли она?
Или попытаться простым (первым примером) способом всё таки сохранять...?
Подскажите пожалуйста....