Показать сообщение отдельно
  #1  
Старый 30.10.2008, 06:49
mskvkin mskvkin вне форума
Новичок
 
Регистрация: 31.08.2008
Сообщения: 99
Репутация: 10
Вопрос помогите срочно

я создаю отчет базы данных в excel.

Вопрос состоит в том, что на одной машине на которой создается отчет стоит office 2007, а также отчет создается на машине на которой установлен office 2000 мне надо чтобы

При создание отчета отчет создавался в формате "Книга Excel 97-2003".

Если можно то поподробнее и с коментариями.

Заранее огромное спасибо

Вот мой исходный код:
PHP код:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Выводим отчет
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  
m:=nz;
     
// Указать программный идентификатор приложения-сервера
  
AppProgID := 'Excel.Application';
  
ServerIsRunning := False;
  
Resultw:=GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);


  if (
Resultw MK_E_UNAVAILABLEthen
    
// Создать один экземпляр сервера
    
App := CreateOleObject(AppProgID)
   else
    
begin
    
// Соединиться с уже запущенной копией сервера
    
App := GetActiveOleObject(AppProgID);
    
ServerIsRunning := True;
  
end;


        
// Создаем  документ

  
ExelOtch:=getcurrentdir+'\Base\Peremeshenie\Otchet\';

  App.WorkBooks.Add;
  Ke:=App.WorkBooks[1];
  Abc:=Ke.WorkSheets[1];
  Abc.Name:='
Лист1';  // Имя страницы созданного документа
             //  объединить четыре ячейки
  Abc.Range['
A1:I1'].Merge;


     // Создаем заголовок отчета
  Abc.Cells[1,1]:='
Накладная на перемещение №'+aedit1.Text+' от '+sdateedit1.Text;
  Abc.Cells[1,1].Font.Bold:=True;
  Abc.Cells[1,1].Font.Size:=14;
     // Выравниваем по центру
  Abc.Range['
A1:I1'].HorizontalAlignment := 3;

  Abc.Range['
A3:B3'].Merge;
  Abc.Cells[3,1]:='
Организация:';
  Abc.Cells[3,1].Font.Size:=11;
  Abc.Range['
A3:B3'].HorizontalAlignment := 4;//выравниваю по правому краю

  Abc.Cells[3,3]:=acomboedit1.Text;
  Abc.Cells[3,3].Font.Size:=11;
  Abc.Range['
C3'].HorizontalAlignment := 2;//выравниваю по правому краю


  Abc.Range['
A4:B4'].Merge;
  Abc.Cells[4,1]:='
Отправитель:';
  Abc.Cells[4,1].Font.Size:=11;
  Abc.Range['
A4:B4'].HorizontalAlignment := 4;//выравниваю по правому краю

  Abc.Cells[4,3]:=acomboedit2.Text;
  Abc.Cells[4,3].Font.Size:=11;
  Abc.Range['
C4'].HorizontalAlignment := 2;//выравниваю по правому краю


  Abc.Range['
A5:B5'].Merge;
  Abc.Cells[5,1]:='
Получатель:';
  Abc.Cells[5,1].Font.Size:=11;
  Abc.Range['
A5:B5'].HorizontalAlignment := 4;//выравниваю по правому краю

  Abc.Cells[5,3]:=acomboedit3.Text;
  Abc.Cells[5,3].Font.Size:=11;
  Abc.Range['
C5'].HorizontalAlignment := 2;//выравниваю по левому краю


  Abc.Cells[7,1]:='
';
  Abc.Cells[7,1].Font.Size:=11;
  Abc.Range['
A7'].HorizontalAlignment := 3;//выравниваю по центру



  Abc.Range['
B7:G7'].Merge;
  Abc.Cells[7,2]:='
Номенклатура';
  Abc.Cells[7,2].Font.Size:=11;
  Abc.Range['
B7:G7'].HorizontalAlignment := 3;//выравниваю по центру


  Abc.Range['
H7:I7'].Merge;
  Abc.Cells[7,8]:='
Количество';
  Abc.Cells[7,8].Font.Size:=11;
  Abc.Range['
H7:I7'].HorizontalAlignment := 3;//выравниваю по центру

  k:=0;

//делаем циклическое заполнение ячеек

  for n:=8 to m+7 do
  begin
       // Заполняем ячейки

  k:=k+1;

  kluchOtch:=Edit1.Text;
  kluchOtch1:=inttostr(k);

//ищу запись по данным и по индексу

  LookRes:=PeremesheniaTable1.Lookup('
DlaMena;Nomer',
    VarArrayOf([kluchOtch,kluchOtch1]),'
DlaMena;Nomer;Nomenclatura;Kolicestvo;EdIzm');
//найденные данные записываю в отчет

  //первый столбец
  Abc.Cells[n,1]:=LookRes[1]; //заполняем порядковый номер

  //второй столбец
  r:='B'+IntToStr(n);
  t:='
G'+IntToStr(n);
  Abc.Range[r,t].Merge;
  Abc.Cells[n,2]:=LookRes[2]; //заполняем столбец наклодная
  Abc.Cells[n,2].Font.Size:=11;
  Abc.Range[r,t].HorizontalAlignment := 2;//выравниваю по правому краю


  //тертий столбец
  r1:='
H'+IntToStr(n);
  t1:='
I'+IntToStr(n);
  Abc.Range[r1,t1].Merge;
  Abc.Cells[n,8]:=LookRes[3]+' '+LookRes[4];
  Abc.Cells[n,8].Font.Size:=11;
  Abc.Range[r1,t1].HorizontalAlignment := 2;//выравниваю по правому краю
  end;
//закончили з-аполнять ячейки

//продолжаем дальше строить отчет




  //Отпустил
  r2:='
A'+IntToStr(n+3);
  t2:='B'+IntToStr(n+3);
  Abc.Range[r2,t2].Merge;
  Abc.Cells[n+3,1]:='
Отпустил:';
  Abc.Range[r2,t2].HorizontalAlignment := 4;//выравниваю по правому краю

  //______________________________
  r3:='
C'+IntToStr(n+3);
  t3:='
D'+IntToStr(n+3);
  Abc.Range[r3,t3].Merge;
  Abc.Cells[n+3,3]:='
__________________';
  Abc.Range[r3,t3].HorizontalAlignment := 2;//выравниваю по правому краю

  //Получил
  r4:='
E'+IntToStr(n+3);
  t4:='
F'+IntToStr(n+3);
  Abc.Range[r4,t4].Merge;
  Abc.Cells[n+3,5]:='
Получил:';
  Abc.Range[r4,t4].HorizontalAlignment := 4;//выравниваю по правому краю

  //______________________________
  r5:='
G'+IntToStr(n+3);
  t5:='
H'+IntToStr(n+3);
  Abc.Range[r5,t5].Merge;
  Abc.Cells[n+3,7]:='
__________________';
  Abc.Range[r5,t5].HorizontalAlignment := 2;//выравниваю по правому краю



  // обрисовка диапазона ячеек
  App.WorkBooks[1].WorkSheets[1].Range['
A7:'+'I'+IntToStr(n-1)].Borders.LineStyle := 1;
//Отчет построен

     // Подавляем вывод диагностических сообщений
  App.DisplayAlerts:=False;
     // Сохраняем документ
  App.ActiveWorkBook.SaveAs(ExelOtch+aedit1.Text);
  App.Quit;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Отчет готов
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

у меня на компьюторе стоит Office 2007 и если я вот так создаю отчет он создает его в 2007 формате, а мне надо независимо от офиса сохранял в формате xls ("Книга Excel 97-2003")
Ответить с цитированием