Изменяю некоторый ячейки в файле Excel, используя ADOQuery через MS Jet.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ADOQuery1 . ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Data Source=' + OpenExlDialog . FileName + ';'
+ 'Extended Properties="Excel 8.0;HDR=No";'
+ 'Mode=ReadWrite;'
+ 'Persist Security Info=False' ;
for i := 0 to node . ChildNodes . Count - 1 do begin
with ADOQuery1 do begin
EmphsExl := node . ChildNodes[i].Attributes[ 'hs' ];
OperSumExl := DecryptInt(node . ChildNodes[i].Attributes[ 's' ]);
Prepared;
Parameters . ParamValues[ '@Emphs' ] := EmphsExl;
Parameters . ParamValues[ '@OperSum' ] := OperSumExl;
ExecSQL;
end ;
end ;
ADOQuery1 . Close;
|
Все срабатывает, но только файл Excel не сохраняется и остается недоступен, пока программа открыта (при попытке открыть этот файл MS Excel выдает ошибку о недоступности). Если закрыть программу, файл Excel сохраняется и его можно открыть самим MS Excel. Почему так и как его сохранить и закрыть не закрывая программы?
Единственное похожее, что нашел — это
связи access на sql.ru в разделе delphi, но там нет решения проблемы.
Заранее благодарю за ответ.