C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 FAQ
C++Builder Programming FAQ
[19] [TECHNIQUE][COMPONENT] 스트링그리드의 데이터를 엑셀로 보내는 방법
박지훈.임프 [cbuilder] 16759 읽음    2001-03-10 04:04
임펠리테리입니다.

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에서는 기본적으로 임포트되어 있습니다.

그럼 참고하시길...
방가방가~~~ [goodclick]   2002-12-17 14:37 X
#include "Excel_TLB.h"  에 관한 내용이 없는것 같군요.

+ -

관련 글 리스트
19 [TECHNIQUE][COMPONENT] 스트링그리드의 데이터를 엑셀로 보내는 방법 박지훈.임프 16759 2001/03/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.