Главная страница
    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.043 c
1-1108349494
ТехникПТО
2005-02-14 05:51
2005.02.27
Сохранение лога чата


14-1108030842
Andryk
2005-02-10 13:20
2005.02.27
Блин эти спамеры "№;%::*?:%;;.


14-1107530105
Pat
2005-02-04 18:15
2005.02.27
Колонтитулы в Excel е


14-1107466249
Usser
2005-02-04 00:30
2005.02.27
В чем может быть причина ошибки?


4-1106037030
Stanislav
2005-01-18 11:30
2005.02.27
Список Mutex ов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский