HeliCOPter |
Отправлено: 25.05.2006, 22:14 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Подскажите как отправить содержимое StringGrida в Excel? |
|
Aptem |
Отправлено: 26.05.2006, 05:49 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Ищите в поиске. Такие вопросы уже много раз разбирались.
|
|
Лена |
Отправлено: 26.05.2006, 09:22 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Для этих целей очень хорош компонент от TMS TAdvStringGrid c адаптером. Делает сохранение в exel одной строкой кода.
|
|
Lizard |
Отправлено: 26.05.2006, 11:17 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
CODE |
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "ProgressUnit.h"
#include "Unit1.h"
#include <utilcls.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma resource "*.dfm"
TProgressForm *ProgressForm;
//---------------------------------------------------------------------------
__fastcall TProgressForm::TProgressForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool x = 0;
void __fastcall TProgressForm::FormActivate(TObject *Sender)
{
int i, I;
Variant XL, v0, v1;
Label2->Caption = "результаты расчета";
try
{
XL = CreateOleObject("Excel.Application");
}
catch(...)
{
MessageDlg("Результаты расчета сохранить не возможно из-за отсутствия Microsoft Office Excel на вашем компьютере!\n"
"Для сохранения результатов расчета установите Microsoft Office Excel.",
mtWarning, TMsgDlgButtons() << mbOK, 0);
x = 1;
}
if (!x)
{
XL.OlePropertySet("Visible",0);
v0 = XL.OlePropertyGet("Workbooks");
XL.OlePropertySet("SheetsInNewWorkbook",(Variant)2);
v0.OleProcedure("Add");
v1 = v0.OlePropertyGet("Item",1);
v0 = v1.OlePropertyGet("Worksheets");
v0.OlePropertyGet("Item",1).OlePropertySet("Name","Результаты расчета");
v0.OlePropertyGet("Item",2).OlePropertySet("Name","Основные показатели и ТЭПы");
CGauge1->MaxValue = StrToFloat(Form1->StringGridResults->RowCount) + StrToFloat(Form1->StringGridTEP->RowCount);
v1 = v0.OlePropertyGet("Item",1);
for (i = 0; i < Form1->StringGridResults->RowCount; i++)
{
Application->ProcessMessages();
CGauge1->Progress = i + 1;
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 1).OlePropertySet("Value", Form1->StringGridResults->Cells[0][i].c_str() );
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 2).OlePropertySet("Value", Form1->StringGridResults->Cells[1][i].c_str() );
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 3).OlePropertySet("Value", Form1->StringGridResults->Cells[2][i].c_str() );
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 4).OlePropertySet("Value", Form1->StringGridResults->Cells[3][i].c_str() );
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 5).OlePropertySet("Value", Form1->StringGridResults->Cells[4][i].c_str() );
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 6).OlePropertySet("Value", Form1->StringGridResults->Cells[5][i].c_str() );
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 7).OlePropertySet("Value", Form1->StringGridResults->Cells[6][i].c_str() );
}
Label2->Caption = "основные показатели и ТЭПы";
I = i;
v1 = v0.OlePropertyGet("Item",2);
for (i = 0; i < Form1->StringGridTEP->RowCount; i++)
{
Application->ProcessMessages();
CGauge1->Progress = I + i + 1;
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 1).OlePropertySet("Value", Form1->StringGridTEP->Cells[0][i].c_str() );
v1.OlePropertyGet("Cells").OlePropertyGet("Item",i + 1, 2).OlePropertySet("Value", Form1->StringGridTEP->Cells[1][i].c_str() );
}
XL.OlePropertySet("Visible",1);
x = 1;
}
}
//---------------------------------------------------------------------------
void __fastcall TProgressForm::Timer1Timer(TObject *Sender)
{
if (x) ProgressForm->Close();
x = 0;
}
//---------------------------------------------------------------------------
|
|
|
|