Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.053 c
9-1101229419
dRake
2004-11-23 20:03
2005.02.27
TankMaze вторая демка :)


6-1103307988
Sanyara
2004-12-17 21:26
2005.02.27
Все компьютеры в сети


14-1107297893
panov
2005-02-02 01:44
2005.02.27
О загаживании форумов.


1-1108349796
alena.svt
2005-02-14 05:56
2005.02.27
Code Explorer


1-1108254422
Дмитрий В. Белькевич
2005-02-13 03:27
2005.02.27
Глюки system.pas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский