Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод данных в Excel или Word. 
:(
    Опции темы
Loki_
  Дата 29.2.2004, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 13.10.2003

Репутация: нет
Всего: нет



Как вывести данные в Excel и Word.
PM MAIL   Вверх
srd
Дата 29.2.2004, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: нет
Всего: 49





--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Kesh
Дата 29.2.2004, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 4
Всего: 54



Какие именно данные и куда именно?...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Kesh
Дата 29.2.2004, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 4
Всего: 54



Так, от балды...
Код
unit k_excel;

interface
Uses SysUtils, Windows, OleServer, Excel2000, main, ActiveX, forms, OleCtrls,
    ClipBrd, Variants;

const
 xlLCID = LOCALE_USER_DEFAULT;

var
 Excel: Excel2000.TExcelApplication;
 WorkBook: Excel2000._WorkBook;
 WorkSheet: Excel2000._WorkSheet;

procedure StartExcel;
procedure ShowExcel;
procedure HideExcel;
procedure CloseExcel;
procedure OpenExistingWorkBook(FileName: String);
procedure CloseWorkBook(FileToSaveName: String);
procedure ExportStartData;
procedure ExportNormalData;

implementation

Uses Utils;

procedure StartExcel;
var
 NewInstance: boolean;
begin
 NewInstance := true;
 Excel := TExcelApplication.Create(frmMain);
 if NewInstance
   then Excel.ConnectKind := ckNewInstance
   else Excel.ConnectKind := ckRunningOrNew;
 Excel.Connect;
end;

procedure ShowExcel;
begin
 if Assigned(Excel)
   then
     begin
       Excel.Visible[xlLCID] := true;
       if (Excel.WindowState[xlLCID] = TOleEnum(xlMinimized))
         then Excel.WindowState[xlLCID] := TOleEnum(xlNormal);
       Excel.ScreenUpdating[xlLCID] := true
     end;
end;

procedure HideExcel;
begin
 if Assigned(Excel)
   then Excel.Visible[xlLCID] := false
end;

procedure CloseExcel;
begin
 if Assigned(Excel)
   then
     begin
       if (Excel.Workbooks.Count>0) and (not Excel.Visible[xlLCID])
         then
           begin
             Excel.WindowState[xlLCID] := TOleEnum(xlMinimized);
             Excel.Visible[xlLCID] := true;
             Application.BringToFront
           end
         else Excel.Quit;
       FreeAndNil(Excel)
     end
end;

procedure OpenExistingWorkBook(FileName: String);
begin
 WorkBook := Excel.Workbooks.Open(FileName,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                  false,xlLCID);
end;

procedure CloseWorkBook(FileToSaveName: String);
var
 SaveChanges: boolean;
begin
 SaveChanges:=false;
 WorkBook.SaveCopyAs(FileToSaveName,xlLCID);
 WorkBook.Close(SaveChanges,EmptyParam,EmptyParam,xlLCID);
end;

procedure ExportStartData;
var
 i: integer;
 Buff: String;
 C: TClipBoard;
begin
 C := TClipboard.Create;
 Buff := '';
 WorkSheet := WorkBook.Worksheets.Item['Исходные данные'] as Excel2000._WorkSheet;
 for i := 0 to High(FirstExpert) do
   begin
     Buff := Buff + FloatToStr(FirstExpert[i]) + #9 + FloatToStr(SecondExpert[i]) + #9 + FloatToStr(ThirdExpert[i]) + #9 + FloatToStr(MMG[i]) + #10;
     frmMain.Caption := Format('Экспорт исходных данных - %d%s выполнено',[Round(i*100/High(ND)),'%']);
   end;  
 Delete(Buff,Length(Buff),1);
 C.SetTextBuf(PChar(Buff));
 try
   WorkSheet.Cells.Item[1,1].PasteSpecial
 finally
   C.Clear;
   C.Free;
   WorkSheet := Nil
 end
end;

procedure ExportNormalData;
var
 i,j: integer;
 Buff: String;
 C: TClipBoard;
 TempArr: array of array[140..260] of real;
begin
 C := TClipboard.Create;
 WorkSheet := WorkBook.Worksheets.Item['Нормальное распределение'] as Excel2000._WorkSheet;
 SetLength(TempArr,N);
 for i := 0 to High(TempArr) do
   begin
     for j := 140 to 260 do
       TempArr[i,j] := GetNormalProbability(FirstExpert[i],SecondExpert[i],ThirdExpert[i],j*0.05,Sigma);
     frmMain.Caption := Format('Расчет нормального распределения - %d%s выполнено',[Round(i*100/High(ND)),'%']);
   end;
 for i := 0 to High(TempArr) do
   begin
     Buff := '';
     C.Clear;
     for j := 140 to 260 do Buff := Buff + FloatToStr(TempArr[i,j]) + #9;
     frmMain.Caption := Format('Экспорт данных по нормальному распределению - %d%s выполнено',[Round(i*100/High(ND)),'%']);
     Delete(Buff,Length(Buff),1);
     C.SetTextBuf(PChar(Buff));
     WorkSheet.Cells.Item[i+1,1].PasteSpecial;
   end;
 frmMain.Caption := 'Формирование отчета окончено';
 C.Clear;
 C.Free;
 WorkSheet := Nil
end;



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Kesh
Дата 29.2.2004, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 4
Всего: 54



И еще от балды...
Код
procedure TfrmMain.btnReportClick(Sender: TObject);
var
 XLWB: _Workbook;
 XLWS: _WorkSheet;
 IIndex: OleVariant;

begin
 Excel.Connect;
 Excel.Visible[0] := true;
 Excel.Workbooks.Add(xlWBatWorkSheet,0);
 IIndex := 1;
 XLWB := Excel.Workbooks.Item[IIndex];
 XLWS := XLWB.Worksheets.Get_Item(1) as _WorkSheet;
 XLWS.Name := 'Сделано Аникеевым Константином';
 XLWS.Range['A1','A1'].Value := 'Hello';
 Sleep(1000);
 XLWS.Range['A1','A1'].Font.Color := clBlue;
 Sleep(1000);
 XLWS.Range['A1','A1'].Interior.Color := clYellow;
 Sleep(1000);
 XLWS.Range['A1','A1'].Font.Bold := true;
 Sleep(1000);
 Excel.Disconnect
end;



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Maverick
Дата 1.3.2004, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Читайте FAQ..... там есть несколько прекрасных примеров....


--------------------
smile
PM ICQ GTalk   Вверх
Georg4
Дата 2.3.2004, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: 0
Всего: 10



И заметте ! я молчу!
smile.gif


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0905 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.