임펠리테리입니다.
C++Builder 4 언리시드에 보시면 챕터15가 엑셀에 대한 내용이며, 아주 친절하고 자세히 설명되어 있습니다. 원서지만 사보시는 것이 좋겠구요. 이 챕터에 있는 예제 중 세번째 것이 엑셀로 데이터를 보내는 것입니다. 스트링그리드에서 읽어서 보내는, 원하시는 그대로는 아닙니다만 약간만 응용하시면 금방 고치실 수 있을 겁니다.
//헤더파일입니다
//---------------------------------------------------------------------------
#ifndef MainH
#define MainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
TCOM_Application m_XLApp; // Excel's Application Object
WorksheetPtr m_Worksheet; // A Worksheet object
RangePtr m_Cells; // A Range object of Cells
RangePtr m_Columns; // A Range object of Columns
void InsertData();
void ChangeColumns();
void HandleRange();
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
// cpp 파일입니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Excel_TLB.h"
#pragma hdrstop
#include "main.h"
#include <graphics.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Create/Launch EXCEL
if (!m_XLApp)
m_XLApp = CoApplication_::Create();
// Make EXCEL visible
m_XLApp->set_Visible(0, true);
// Add a Worksheet
m_XLApp->Workbooks->Add(xlWBATWorksheet);
// Get the newly added Worksheet object
m_Worksheet = m_XLApp->Workbooks->get_Item(1)->Worksheets->get_Item(1);
// Set it's name to "C++Builder Data";
m_Worksheet->Name = WideString("C++Builder Data");
// Call routines to insert Data
InsertData();
HandleRange();
ChangeColumns();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
if (m_XLApp)
{
m_XLApp->set_DisplayAlerts(0, false);
m_XLApp->Quit();
}
}
//---------------------------------------------------------------------------
void TForm1::InsertData()
{
int i;
for (i=1; i<=10; i++)
m_Worksheet->Cells->set__Default(i, 1, i);
m_Worksheet->Cells->set__Default(i, 1, "=SUM(A1:A10)");
}
void TForm1::HandleRange()
{
RangePtr range = m_Worksheet->get_Range("C1:F25");
range->Formula = "=RAND()";
range->Columns->Interior->ColorIndex = 3;
range->Borders->LineStyle = xlContinuous;
}
void TForm1::ChangeColumns()
{
// Get interface to first column
RangePtr firstCol = m_Worksheet->Columns->get__Default(1);
firstCol->ColumnWidth = 20; // Set width
firstCol->Font->Bold = true; // Set BOLD font
firstCol->Font->Italic = true; // Enable Italic
firstCol->Font->Color = clBlue; // Tweak color
}
주의할 점: 만약 사용하시는 빌더의 버전이 4나 3라면, 직접 엑셀 ActiveX를 임포트해야만 합니다. 빌더 5에서는 기본적으로 임포트되어 있습니다.
그럼 참고하시길...
|