Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 396

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
При экспорте данных из StringGrid в Excel вылетает ошибка "ole error 800A03EC". Подскажите пожалуйста в чем может быть проблема?

Приложение:
  1. function export_excel(SG:TStringGrid):integer;
  2.  
  3. const
  4. xlWBATWorksheet = -4167;
  5. var
  6. Row, Col: Integer;
  7. extens: string;
  8. Sheet: OLEVariant;
  9. begin
  10.  
  11. try
  12. form2.ea.Visible[0] := False;
  13. form2.ea.Workbooks.Add(xlWBatWorkSheet,0);
  14. Sheet := form2.ea.Workbooks[1].WorkSheets[1];
  15. Sheet.Name := 'ñòð1';
  16. for col := 0 to SG.ColCount - 1 do
  17. for row := 0 to SG.RowCount - 1 do
  18. Sheet.Cells[row + 1, col + 1] := SG.Cells[col, row];
  19. try
  20. if (copy(form2.ea.Version[0],1,2)='12') then extens:='.xlsx' else extens:='.xls';
  21. form2.ea.Workbooks[1].SaveCopyAs(Unit1.conf.DefDir+
  22. GetHost(DownReadyList.ListBox1.Items[iglobal])+'_'+datetostr(date)+extens,0);
  23.  
  24. except
  25. on EOleSysError do
  26. // Error ?
  27. end;
  28. finally
  29. Form2.Log.Items.Add(Unit1.conf.DefDir+Unit1.GetHost(DownReadyList.ListBox1.Items[iglobal])+'_'+datetostr(date)+'.xls');
  30. Form2.Log.Items.Add('Óñïåøíî ñîçäàí');
  31. form2.ea.DisplayAlerts[0]:= False;
  32. form2.ea.Quit;
  33. Sheet := Unassigned;
  34.  
  35. end;
  36. end;


mobidik Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: mobidik (статус: Посетитель)
Вопрос отправлен: 10 июня 2011, 10:31
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: corban

Здравствуйте, mobidik!
Посмотри, у тебя сам ексель-то запущен на момент экспорта данных? Судя по приведенному тобой коду ексель запускается где-то раньше експорта данных, но прибивается в этом куске, поэтому если твой код должен выполняться в цикле, то после первого же прохода ексель уничтожится (form2.ea.Quit), а заново не создастся.

Ответ отправил: corban (статус: 2-ой класс)
Время отправки: 14 июня 2011, 09:14


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 14 июня 2011, 07:04; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 10 июня 2011, 10:39 [#1]:

Зацени вот это.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

10 июня 2011, 10:49: Вопрос перемещён из тематического раздела Delphi » Алгоритмы, преобразования в раздел Delphi » COM, ActiveX и взаимодействие с другими приложениями модератором Ерёмин А.А.

corban

corban (статус: 2-ой класс), 14 июня 2011, 07:04 [#2]:

Посмотри, у тебя сам ексель-то запущен на момент экспорта данных? Судя по приведенному тобой коду ексель запускается где-то раньше експорта данных, но прибивается в этом куске, поэтому если твой код должен выполняться в цикле, то после первого же прохода ексель уничтожится (form2.ea.Quit), а заново не создастся.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.02 сек.