[DUG] Writing Excel spreadsheets using Microsoft.Jet.OLEDB (ADO)
Graham Marsden
graham at wk.planet.gen.nz
Tue Dec 1 14:30:33 NZDT 2009
Hi All
Does anyone have any experience writing Excel spreadsheets using Microsoft.Jet.OLEDB (ADO) ??
I have inherited some D7 code which copies an Excel template file then attempts to add rows to it using this code
...
(I have stripped this down to the essentials to reveal the important lines)
(btw - this is on windows XP Pro - latest updates plus Excel is running but no files open)
FileCopy('TAD Order TEMPLATE.xls', xl_file); // xl_file is the output filename
// set up ADO connection to spreadsheet
ADOInput.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=[FILENAME];Mode=ReadWrite;'+
'Extended Properties="Excel 8.0; HDR=NO; IMEX=2;";'+
'Persist Security Info=False';
// code omitted that inserts the contents of 'xl_file' for [FILENAME]
ADOInput.Active := True;
ADOInput.Open;
// put in a little header to file which should be open to accept them
with ADOInput do
begin
Insert;
FieldByName('F1').AsString := ' ';
Post;
Insert;
FieldByName('F1').AsString := 'Order for '+ this_regnum +' / '+ this_id + ' ' +
this_person + ' ('+ this_name +')';
Post;
Insert;
FieldByName('F1').AsString := ' ';
Post;
// Close now to see what we have in the file
ADOInput.Active := False;
ADOInput.Close;
// under normal execution additional rows are added before closure (at least the code operates with no
error messages)
The file xl_file should now be the closed with the addition of 3 extra rows
BUT
The file is still open and the additional rows have not been written to the file, could be buffered (?)
Any bright ideas, obvious stuff I have overlooked, etc etc.
On a deadlihere so any assistance very much appreciated.
Regards
Graham Marsden
More information about the Delphi
mailing list