Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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")

Последний раз редактировалось mskvkin, 30.10.2008 в 17:56.
Ответить с цитированием
  #2  
Старый 30.10.2008, 13:19
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

насколько я помню формат файла в экселе при сохранении можно указывать. а вообще рассказывай подробнее, чтобы ответили, код покажи которым отчет создается, а то может ты через компоненту ваяешь а не ручками
__________________
правильный вопрос содержит в себе 90% ответа
Ответить с цитированием
  #3  
Старый 30.10.2008, 18:04
mskvkin mskvkin вне форума
Новичок
 
Регистрация: 31.08.2008
Сообщения: 99
Репутация: 10
Вопрос Я исправил

Вот я исправил и подкорректировал вопрос помогите пожалуйста очень надо просто срочно.

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

Я уже разобрался
Ответить с цитированием
  #5  
Старый 30.10.2008, 23:34
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Дык раскажы теперь остальным !!!
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025