помогите срочно
я создаю отчет базы данных в 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_UNAVAILABLE) then
// Создать один экземпляр сервера
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")
|