Главная страница
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.04 c
3-1106903250
Oleon
2005-01-28 12:07
2005.02.27
Как в cxGrid выборочные строки выделить другим цветом?


1-1108457263
speed
2005-02-15 11:47
2005.02.27
Hint...


3-1107075964
Kri
2005-01-30 12:06
2005.02.27
Oshibka pri otkritie programki na drugih particijah


1-1108037175
D2k5
2005-02-10 15:06
2005.02.27
Установка компонентов в Delphi 2005


6-1103012316
Архитектор
2004-12-14 11:18
2005.02.27
InternetSetOption