Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2010, 21:39   #1
4sense
Пользователь
 
Аватар для 4sense
 
Регистрация: 17.09.2009
Сообщений: 19
Восклицание Excel 2007 и Delphi 7 выдает ошибку.

Доброго времени суток. Вопрос следующего типа.
У меня есть программа, и я хочу сделать в ней функцию - экспорт из DBGrid в Excel. Делается это по нажатию на кнопку. Вот собственно сам код:

Код:
procedure TSaleForm.Button3Click(Sender: TObject);
var
  i,j,index: Integer;
  ExcelApp,sheet: Variant;
begin
  ExcelApp := CreateOleObject('Excel.Application');
  ExcelApp.Visible := False;
  ExcelApp.WorkBooks.Add('путь\price_list_upd.xls');
  sheet:=ExcelApp.WorkBooks[1].WorkSheets[1];
  index:=1;
  SaleForm.DBGrid1.DataSource.DataSet.First;
  for i:=1 to  SaleForm.DBGrid1.DataSource.DataSet.RecordCount do
      begin
      for j:=1 to SaleForm.DBGrid1.FieldCount do
      sheet.cells[index,j]:=SaleForm.DBGrid1.fields[j-1].asstring;
      inc(index);
      SaleForm.DBGrid1.DataSource.DataSet.Next;
      end;
end;
При запуске приложения, выдается ошибка следующего типа:

"raised exception class EOleSysError with message Класс Не зарегистрирован"

Вот собственно и ступор в этом. Прошу помощи, так как работа простаивает из за этого. Погуглил и прошелся по форуму, вроде были ответы, но все они велись к тому, что нужно найти библиотеку и зарегистрировать ее с помощью regsvr32.exe. Но я не знаю какая библиотека используется.
В общем если сможете помочь, буду очень благодарен за терпение ко мне.
С уважением.
4sense вне форума Ответить с цитированием
Старый 15.03.2010, 08:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
При запуске приложения, выдается ошибка следующего типа:
При запуске приложения или при нажатии на кнопку?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.03.2010, 19:04   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А эксель установлен ?
Если да, то для какой версии офиса у вас в Д7 установлены соответствующие компоненты ?
Ведь в установщике Д7 нет компонентов для 2007-го офиса...
mihali4 вне форума Ответить с цитированием
Старый 15.03.2010, 23:21   #4
4sense
Пользователь
 
Аватар для 4sense
 
Регистрация: 17.09.2009
Сообщений: 19
По умолчанию

да я в курсе, извиняюсь, что сразу не объяснил еще в теме. Да эксель установлен. Вообще сам пакет стандартный 2007 оффис. Выбирал я для XP во время установки в Д7. Это как то можно решить?
4sense вне форума Ответить с цитированием
Старый 15.03.2010, 23:22   #5
4sense
Пользователь
 
Аватар для 4sense
 
Регистрация: 17.09.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А эксель установлен ?
Если да, то для какой версии офиса у вас в Д7 установлены соответствующие компоненты ?
Ведь в установщике Д7 нет компонентов для 2007-го офиса...
p.s до конца сдачи проекта остался завтрашний день
4sense вне форума Ответить с цитированием
Старый 16.03.2010, 14:33   #6
4sense
Пользователь
 
Аватар для 4sense
 
Регистрация: 17.09.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
При запуске приложения или при нажатии на кнопку?
Именно при запуске приложения, будь то exe файл или CTRL+F9
4sense вне форума Ответить с цитированием
Старый 16.03.2010, 23:42   #7
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Появление ошибки не понятно. У меня этот код работает нормально.
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  i,j,index: Integer;
  ExcelApp, sheet, FN: Variant;
  S : string;
begin
  try
    ExcelApp := CreateOleObject('Excel.Application');
  except
    on E : EOleError do begin
      ShowMessage(E.Message);
      Exit;
    end;
  end;
  
  try
    ExcelApp.Visible := True;
    FN := NULL;
    ExcelApp.WorkBooks.Add(FN); //имя файла шаблона (для эксперимента) не указываем
    sheet:=ExcelApp.WorkBooks[1].WorkSheets[1];
    index:=1;

    SaleForm.DBGrid1.DataSource.DataSet.First;
    for i:=1 to SaleForm.DBGrid1.DataSource.DataSet.RecordCount do begin
      for j:=1 to SaleForm.DBGrid1.FieldCount do begin
        //через промежуточную переменную на всякий случай:
        S := SaleForm.DBGrid1.fields[j-1].asstring;
        sheet.cells[index,j] := S;
      end;
      inc(index);
      SaleForm.DBGrid1.DataSource.DataSet.Next;
    end;
  finally
    ExcelApp :=  Unassigned;
  end;
end;
Установлен MS Office 2007. Никакой регистрации сервера Office не требуется. В предложении uses должна быть ссылка на модуль ComObj. В отладке смотрим на какой строке происходит ошибка.

Еще можно попытать раннее связывание:
Код:
uses ExcelXP, OleServer;
...
procedure TForm1.Button3Click(Sender: TObject);
var
  ExcelApp : TExcelApplication;
  Sheet : Variant;
  i,j,index: Integer;
begin
  ExcelApp := TExcelApplication.Create(nil);
  try
    ExcelApp.ConnectKind := ckNewInstance;
    ExcelApp.Connect;
//    ExcelApp.DisplayAlerts[0] := false;
    ExcelApp.AutoQuit := False;
    ExcelApp.Visible[0] := True;
    ExcelApp.SheetsInNewWorkbook[0]:=3;
    ExcelApp.Workbooks.Add(EmptyParam,0);

    sheet:=ExcelApp.WorkBooks[1].WorkSheets[1];
    index:=1;

    for i := 0 to SG.RowCount-1 do begin
      for j :=0 to SG.ColCount-1 do
        sheet.cells[index, j+1] := SG.Cells[j, i];
      inc(index);
    end;

  finally
    ExcelApp.UserControl := True;
    ExcelApp.Disconnect;
    FreeAndNil(ExcelApp);
  end;

Последний раз редактировалось Скандербег; 17.03.2010 в 00:40.
Скандербег вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение компонетнов MS Office Excel 2007 к Delphi 7 kta87 Общие вопросы Delphi 16 25.02.2010 21:51
Delphi 7 + MS Office Excel 2007 kta87 Общие вопросы Delphi 0 22.02.2010 23:55
Excel выдает ошибку "слишком много различных форматов ячеек" Рогачева Татьяна Microsoft Office Excel 2 14.04.2009 08:50
на компьютере нет Delphi, приложение не запускается, выдает ошибку - не является приложением Win32 Vadim_Haritonov Общие вопросы Delphi 3 30.10.2008 12:23
Windows2003 ошибку выдает Cantana Windows 11 07.12.2007 06:04