Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Как данные из выборки в БД передать в Ексель?   Найти похожие ветки 

 
Megabyte ©   (2005-02-14 01:07) [0]

Т.е. мне надо передать в Ексель данные, полученные по запросу. Допустим, я в начале могу данные записать в DBGrid. Как оттуда их передать в Ексель?


 
iskatel ©   (2005-02-14 01:10) [1]

если руками то в экселе все есть - хрень называется "внешние данные" в меню "данные", а если из проги то юзай его как ком сервер и передавай...


 
iskatel ©   (2005-02-14 01:22) [2]

юзать можно двумя путями - через смарт поинтеры - быстро, но геморно и иногда глючит (в одном месте мне выдавало ошибку о несоответствии типов хотя вроде все правильно, все перепробовал)
второй путь - VARIANT обертки интерфейсов - проще, работает наверняка, но медленнее, на тебе пример, нарыл однажды, только он на сях, но принцип думаю поймеш

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "GetExcel.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm_GetExcel *Form_GetExcel;
//---------------------------------------------------------------------------
__fastcall TForm_GetExcel::TForm_GetExcel(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
/*
||
|| Launch Excel
||
*/
void __fastcall TForm_GetExcel::Button_LaunchExcelClick(TObject *Sender)
{
try
{
 my_excel = Variant::GetActiveObject("excel.application");
}
catch (...)
{
 try
 {
  my_excel = Variant::CreateObject("excel.application");
 }
 catch (...)
 {
  ShowMessage("GetExcel failed.");
  return;
 }
}
my_excel.OlePropertySet("Visible",(Variant)true);
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
/*
||
||
||
*/
void __fastcall TForm_GetExcel::Button_WorkbookClick(TObject *Sender)
{
Variant my_workbook;
Variant my_worksheet;
Variant my_range;

   PropertyGet     Range("Range");
   PropertySet     SetValue("Value");
   PropertySet     SetFormula("Formula");
   PropertyGet     GetValue("Value");
   PropertyGet     GetFormula("Formula");
                     
my_workbook  = my_excel.OlePropertyGet("ActiveWorkbook");
my_worksheet = my_workbook.OlePropertyGet("ActiveSheet");

   Range.ClearArgs();
   SetValue.ClearArgs();
   my_range    = my_worksheet.Exec(Range << "A1");
   my_range.Exec(SetValue << "My Excel Worksheet");

   Range.ClearArgs();
   my_range    = my_worksheet.Exec(Range << "B1:B5");
   my_range.Exec(SetFormula << "=rand()");

   Range.ClearArgs();
   SetFormula.ClearArgs();
   my_range    = my_worksheet.Exec(Range << "A2");
   my_range.Exec(SetFormula << "=sum(b1:b5)");

ShowMessage(my_range.OlePropertyGet("Value"));
ShowMessage(my_range.OlePropertyGet("Formula"));
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
/*
||
|| Add New Workbook
||
*/
void __fastcall TForm_GetExcel::Button_NewWorkbookClick(TObject *Sender)
{
Variant all_workbooks;
Variant my_workbook;

//-- Get workbooks collection
all_workbooks = my_excel.OlePropertyGet("Workbooks");

//-- Set number of worksheets to 1
my_excel.OlePropertySet("SheetsInNewWorkbook",(Variant)1);

//-- Create a new workbook
my_workbook  = all_workbooks.OleFunction("Add");
}
//---------------------------------------------------------------------------

void __fastcall TForm_GetExcel::Button_SaveClick(TObject *Sender)
{
Variant my_workbook = my_excel.OlePropertyGet("ActiveWorkbook");

my_workbook.OleProcedure("Save");
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
/*
||
||
||
*/
void __fastcall TForm_GetExcel::Button_SaveAsClick(TObject *Sender)
{
   Procedure SaveAs("SaveAs");
Variant my_workbook = my_excel.OlePropertyGet("ActiveWorkbook");
   
   my_workbook.Exec(SaveAs << "c:\\my_file.xls");
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
/*
||
||
||
*/
void __fastcall TForm_GetExcel::Button_OpenClick(TObject *Sender)
{
Variant all_workbooks = my_excel.OlePropertyGet("workbooks");
   Procedure Open("Open");

if (OpenDialog1->Execute())
{
       all_workbooks.Exec(Open << OpenDialog1->FileName);
}
}
//---------------------------------------------------------------------------


 
GanibalLector ©   (2005-02-14 02:28) [3]

Вообще-то поиск еще рулит
http://delphimaster.net/view/3-1108027449/



Страницы: 1 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.06 c
3-1106667952
S.A.S.
2005-01-25 18:45
2005.02.27
UpplyUpdates. FireBird Embedded. DBExpress.


14-1107720580
Layner
2005-02-06 23:09
2005.02.27
Здравствуйте! Посоветуйте плз, как так можно сделать,


3-1106664316
juice
2005-01-25 17:45
2005.02.27
Запрос к 2-м базам


14-1107064619
Чеширский_Кот
2005-01-30 08:56
2005.02.27
Вызываю на дуэль трех мушкетеров с этого форума!


3-1106818127
Valeriya
2005-01-27 12:28
2005.02.27
Как подключить данные из процедуры в XL Report?