제목 그대로 입니다. northwind.mdb에 있는 customer라는 테이블의 내용을 읽어 메모리에 올린 후 이를 DataSet으로만들고 다시 이것을 XML 문서(customrt.xml)로 만든 후 미리 만들어 놓은 customer.xsl을 이용하여 변환 하여 이를 Excel 파일을 통해 출력하는 예제 입니다.
XSL에 관련된 사항은 XML 강좌를 통해 공부 하도록 하세요~
실행전에 있어야 되는 파일은 northwind.mdb 와 customer.xsl 파일 입니다. northwind.mdb는 MS Access가 설치 되곳이면 아마 있을겁니다. 찾기로 해서 찾아 보세요...
--------------------------------------
customer.xsl 파일은 다음과 같습니다.
--------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<HEAD>
<STYLE>
.HDR { background-color:bisque;font-weight:bold }
.BDR { background-color:lightskyblue;font-weight:bold }
</STYLE>
</HEAD>
<BODY>
<TABLE>
<COLGROUP WIDTH="150" ALIGN="CENTER"></COLGROUP>
<COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
<COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
<COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
<COLGROUP WIDTH="150" ALIGN="LEFT"></COLGROUP>
<TD CLASS="HDR">Customer ID</TD>
<TD CLASS="HDR">Company</TD>
<TD CLASS="HDR">Contact</TD>
<TD CLASS="HDR">Country</TD>
<TD CLASS="HDR">Phone</TD>
<xsl:for-each select="NewDataSet/Table">
<TR>
<TD CLASS="BDR"><xsl:value-of select="CustomerID"/></TD>
<TD><xsl:value-of select="CompanyName"/></TD>
<TD><xsl:value-of select="ContactName"/></TD>
<TD><xsl:value-of select="Country"/></TD>
<TD><xsl:value-of select="Phone"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
---------------------------------------------------
실행 후 만들어 지는 customer.xml은 다음과 같습니다.
---------------------------------------------------
<HTML><HEAD><STYLE>
.HDR { background-color:bisque;font-weight:bold }
.BDR { background-color:lightskyblue;font-weight:bold }
</STYLE></HEAD><BODY><TABLE><COLGROUP WIDTH="150" ALIGN="CENTER"></COLGROUP><COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP><COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP><COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP><COLGROUP WIDTH="150" ALIGN="LEFT"></COLGROUP><TD CLASS="HDR">Customer ID</TD><TD CLASS="HDR">Company</TD><TD CLASS="HDR">Contact</TD><TD CLASS="HDR">Country</TD><TD CLASS="HDR">Phone</TD><TR><TD CLASS="BDR">ALFKI</TD><TD>신영상사 ㈜</TD><TD>한석규</TD><TD>대한민국</TD><TD>(051)575-5776</TD></TR><TR><TD CLASS="BDR">ANATR</TD><TD>원창 ㈜</TD><TD>황영순</TD><TD>대한민국</TD><TD>(02)681-6889</TD></TR><TR><TD CLASS="BDR">ANTON</TD><TD>동광 통상 ㈜</TD><TD>조자룡</TD><TD>대한민국</TD><TD>(02)989-9889</TD></TR><TR><TD CLASS="BDR">AROUT</TD><TD>경성 트레이딩 ㈜</TD><TD>구재석</TD><TD>대한민국</TD><TD>(031)76-4568</TD></TR><TR><TD CLASS="BDR">BERGS</TD><TD>정금 상사 ㈜</TD><TD>최영희</TD><TD>대한민국</TD><TD>(041)92-3778</TD></TR><TR><TD CLASS="BDR">BLAUS</TD><TD>협우 상사 ㈜</TD><TD>손미선</TD><TD>대한민국</TD><TD>(02)211-1234</TD></TR><TR><TD CLASS="BDR">BLONP</TD><TD>베네디스 유통 ㈜</TD><TD>장선희</TD><TD>대한민국</TD><TD>(02)111-2954</TD></TR><TR><TD CLASS="BDR">BOLID</TD><TD>삼화 상사 ㈜</TD><TD>정영일</TD><TD>대한민국</TD><TD>(051)4-1945</TD></TR><TR><TD CLASS="BDR">BONAP</TD><TD>서주 무역 ㈜</TD><TD>문익한</TD><TD>대한민국</TD><TD>(02)497-4896</TD></TR><TR><TD CLASS="BDR">BOTTM</TD><TD>태강 교역 ㈜</TD><TD>문흥미</TD><TD>대한민국</TD><TD>(051)45-9483</TD></TR><TR><TD CLASS="BDR">BSBEV</TD><TD>월드 링크 ㈜</TD><TD>이강주</TD><TD>대한민국</TD><TD>(051)342-3333</TD></TR><TR><TD CLASS="BDR">CACTU</TD><TD>혜성 백화점 ㈜</TD><TD>박광준</TD><TD>대한민국</TD><TD>(02)43-4486</TD></TR><TR><TD CLASS="BDR">CENTC</TD><TD>진주 백화점 ㈜</TD><TD>홍성주</TD><TD>대한민국</TD><TD>(031)44-3687</TD></TR><TR><TD CLASS="BDR">CHOPS</TD><TD>동남 상사 ㈜</TD><TD>강태준</TD><TD>대한민국</TD><TD>(02)134-5897</TD></TR><TR><TD CLASS="BDR">COMMI</TD><TD>대진 상사 ㈜</TD><TD>천용만</TD><TD>대한민국</TD><TD>(02)878-9174</TD></TR><TR><TD CLASS="BDR">CONSH</TD><TD>ITM ㈜</TD><TD>남궁익선</TD><TD>대한민국</TD><TD>(02)489-9184</TD></TR><TR><TD CLASS="BDR">DRACD</TD><TD>극동 무역 ㈜</TD><TD>강민수</TD><TD>대한민국</TD><TD>(02)978-1984</TD></TR><TR><TD CLASS="BDR">DUMON</TD><TD>양정 물산 ㈜</TD><TD>주진국</TD><TD>대한민국</TD><TD>(02)444-2971</TD></TR><TR><TD CLASS="BDR">EASTC</TD><TD>성신 교역 ㈜</TD><TD>성병재</TD><TD>대한민국</TD><TD>(041)487-4971</TD></TR><TR><TD CLASS="BDR">ERNSH</TD><TD>신세계 통상 ㈜</TD><TD>강세라</TD><TD>대한민국</TD><TD>(031)21-9284</TD></TR><TR><TD CLASS="BDR">FAMIA</TD><TD>삼일 ㈜</TD><TD>손미순</TD><TD>대한민국</TD><TD>(02)866-6667</TD></TR><TR><TD CLASS="BDR">FISSA</TD><TD>세주 상사 ㈜</TD><TD>유영주</TD><TD>대한민국</TD><TD>(041)33-3433</TD></TR><TR><TD CLASS="BDR">FOLIG</TD><TD>한일 상사 ㈜</TD><TD>강판석</TD><TD>대한민국</TD><TD>(02)211-3421</TD></TR><TR><TD CLASS="BDR">FOLKO</TD><TD>유미 백화점 ㈜</TD><TD>최재경</TD><TD>대한민국</TD><TD>(02)768-7688</TD></TR><TR><TD CLASS="BDR">FRANK</TD><TD>진흥 ㈜</TD><TD>성현아</TD><TD>대한민국</TD><TD>(02)123-0345</TD></TR><TR><TD CLASS="BDR">FRANR</TD><TD>미림 백화점 ㈜</TD><TD>이혜준</TD><TD>대한민국</TD><TD>(031)56-2091</TD></TR><TR><TD CLASS="BDR">FRANS</TD><TD>한미 교역 ㈜</TD><TD>정영순</TD><TD>대한민국</TD><TD>(02)211-2221</TD></TR><TR><TD CLASS="BDR">FURIB</TD><TD>오성 통상 ㈜</TD><TD>오민수</TD><TD>대한민국</TD><TD>(02)421-9238</TD></TR><TR><TD CLASS="BDR">GALED</TD><TD>광성 교역 ㈜</TD><TD>김혜린</TD><TD>대한민국</TD><TD>(02)892-4921</TD></TR><TR><TD CLASS="BDR">GODOS</TD><TD>한미 식품 ㈜</TD><TD>김윤중</TD><TD>대한민국</TD><TD>(02)545-8911</TD></TR><TR><TD CLASS="BDR">GOURL</TD><TD>동양 무역 ㈜</TD><TD>한빈</TD><TD>대한민국</TD><TD>(031)77-7778</TD></TR><TR><TD CLASS="BDR">GREAL</TD><TD>캘리포니아 ㈜</TD><TD>황보영국</TD><TD>대한민국</TD><TD>(02)676-6766</TD></TR><TR><TD CLASS="BDR">GROSR</TD><TD>동성 직배 ㈜</TD><TD>마창진</TD><TD>대한민국</TD><TD>(02)111-2302</TD></TR><TR><TD CLASS="BDR">HANAR</TD><TD>YH 무역 ㈜</TD><TD>유영철</TD><TD>대한민국</TD><TD>(041)110-2181</TD></TR><TR><TD CLASS="BDR">HILAA</TD><TD>칠성 상사 ㈜</TD><TD>이한일</TD><TD>대한민국</TD><TD>(0361)39-1243</TD></TR><TR><TD CLASS="BDR">HUNGC</TD><TD>아성 교역 ㈜</TD><TD>김애란</TD><TD>대한민국</TD><TD>(02)444-1978</TD></TR><TR><TD CLASS="BDR">HUNGO</TD><TD>샤론 통상 ㈜</TD><TD>노소연</TD><TD>대한민국</TD><TD>(051)20-1993</TD></TR><TR><TD CLASS="BDR">ISLAT</TD><TD>글로리아 백화점 ㈜</TD><TD>황길호</TD><TD>대한민국</TD><TD>(02)113-1111</TD></TR><TR><TD CLASS="BDR">KOENE</TD><TD>신세기 상사 ㈜</TD><TD>강경식</TD><TD>대한민국</TD><TD>(031)46-4565</TD></TR><TR><TD CLASS="BDR">LACOR</TD><TD>세준 통상 ㈜</TD><TD>신민경</TD><TD>대한민국</TD><TD>(02)123-7981</TD></TR><TR><TD CLASS="BDR">LAMAI</TD><TD>조선 무역 ㈜</TD><TD>이대욱</TD><TD>대한민국</TD><TD>(041)91-1295</TD></TR><TR><TD CLASS="BDR">LAUGB</TD><TD>성화 식품 ㈜</TD><TD>정영진</TD><TD>대한민국</TD><TD>(02)894-1111</TD></TR><TR><TD CLASS="BDR">LAZYK</TD><TD>한성 백화점 ㈜</TD><TD>강현수</TD><TD>대한민국</TD><TD>(031)78-1911</TD></TR><TR><TD CLASS="BDR">LEHMS</TD><TD>동방 무역 ㈜</TD><TD>최한기</TD><TD>대한민국</TD><TD>(02)999-9938</TD></TR><TR><TD CLASS="BDR">LETSS</TD><TD>대광 상사 ㈜</TD><TD>민병철</TD><TD>대한민국</TD><TD>(031)66-2911</TD></TR><TR><TD CLASS="BDR">LILAS</TD><TD>경동 무역 ㈜</TD><TD>임홍삼</TD><TD>대한민국</TD><TD>(02)232-9181</TD></TR><TR><TD CLASS="BDR">LINOD</TD><TD>흑진주 백화점 ㈜</TD><TD>황규하</TD><TD>대한민국</TD><TD>(02)668-1097</TD></TR><TR><TD CLASS="BDR">LONEP</TD><TD>개성 트레이딩 ㈜</TD><TD>마은성</TD><TD>대한민국</TD><TD>(031)78-1110</TD></TR><TR><TD CLASS="BDR">MAGAA</TD><TD>성진 인터내셔널 ㈜</TD><TD>이성화</TD><TD>대한민국</TD><TD>(02)890-1109</TD></TR><TR><TD CLASS="BDR">MAISD</TD><TD>HQ 무역 ㈜</TD><TD>이영애</TD><TD>대한민국</TD><TD>(031)89-1098</TD></TR><TR><TD CLASS="BDR">MEREP</TD><TD>장미 백화점 ㈜</TD><TD>정보진</TD><TD>대한민국</TD><TD>(06113450-3400</TD></TR><TR><TD CLASS="BDR">MORGK</TD><TD>신천지 통상 ㈜</TD><TD>서예희</TD><TD>대한민국</TD><TD>(02)402-1092</TD></TR><TR><TD CLASS="BDR">NORTS</TD><TD>아틀란티스 통상 ㈜</TD><TD>우순하</TD><TD>대한민국</TD><TD>(02)901-8956</TD></TR><TR><TD CLASS="BDR">OCEAN</TD><TD>새롬 교역 ㈜</TD><TD>서한성</TD><TD>대한민국</TD><TD>(02)907-1884</TD></TR><TR><TD CLASS="BDR">OLDWO</TD><TD>우주 상사 ㈜</TD><TD>배준호</TD><TD>대한민국</TD><TD>(02)774-1290</TD></TR><TR><TD CLASS="BDR">OTTIK</TD><TD>삼선 무역 ㈜</TD><TD>구재석</TD><TD>대한민국</TD><TD>(031)88-1039</TD></TR><TR><TD CLASS="BDR">PARIS</TD><TD>평화 상사 ㈜</TD><TD>김필순</TD><TD>대한민국</TD><TD>(02)109-2094</TD></TR><TR><TD CLASS="BDR">PERIC</TD><TD>동도 교역 ㈜</TD><TD>하사헌</TD><TD>대한민국</TD><TD>(051)12-1122</TD></TR><TR><TD CLASS="BDR">PICCO</TD><TD>TGIF ㈜</TD><TD>임정빈</TD><TD>대한민국</TD><TD>(02)100--1000</TD></TR><TR><TD CLASS="BDR">PRINI</TD><TD>동신 상사 ㈜</TD><TD>최춘실</TD><TD>대한민국</TD><TD>(061)145-1895</TD></TR><TR><TD CLASS="BDR">QUEDE</TD><TD>게이트웨이 통상 ㈜</TD><TD>전준호</TD><TD>대한민국</TD><TD>(042)45-1093</TD></TR><TR><TD CLASS="BDR">QUEEN</TD><TD>사하라 통상 ㈜</TD><TD>정가진</TD><TD>대한민국</TD><TD>(02)764-7644</TD></TR><TR><TD CLASS="BDR">QUICK</TD><TD>미성 백화점 ㈜</TD><TD>호혜경</TD><TD>대한민국</TD><TD>(031)44-1114</TD></TR><TR><TD CLASS="BDR">RANCH</TD><TD>스타 상사 ㈜</TD><TD>황영남</TD><TD>대한민국</TD><TD>(02)342-1111</TD></TR><TR><TD CLASS="BDR">RATTC</TD><TD>금강 ㈜</TD><TD>장미자</TD><TD>대한민국</TD><TD>(02)565-1901</TD></TR><TR><TD CLASS="BDR">REGGC</TD><TD>정문 상사 ㈜</TD><TD>김완순</TD><TD>대한민국</TD><TD>(02)903-1908</TD></TR><TR><TD CLASS="BDR">RICAR</TD><TD>크리스탈 교역 ㈜</TD><TD>김찬진</TD><TD>대한민국</TD><TD>(031)45-1932</TD></TR><TR><TD CLASS="BDR">RICSU</TD><TD>한남 상사 ㈜</TD><TD>서태진</TD><TD>대한민국</TD><TD>(02)712-8931</TD></TR><TR><TD CLASS="BDR">ROMEY</TD><TD>백조 백화점 ㈜</TD><TD>안재혁</TD><TD>대한민국</TD><TD>(031)56-9859</TD></TR><TR><TD CLASS="BDR">SANTG</TD><TD>태흥 무역 ㈜</TD><TD>김종설</TD><TD>대한민국</TD><TD>(02)108-1298</TD></TR><TR><TD CLASS="BDR">SAVEA</TD><TD>알프스 무역 ㈜</TD><TD>조규현</TD><TD>대한민국</TD><TD>(061)77-2091</TD></TR><TR><TD CLASS="BDR">SEVES</TD><TD>엘르 ㈜</TD><TD>김명석</TD><TD>대한민국</TD><TD>(02)106-2841</TD></TR><TR><TD CLASS="BDR">SIMOB</TD><TD>은성 상사 ㈜</TD><TD>허청일</TD><TD>대한민국</TD><TD>(031)56-1431</TD></TR><TR><TD CLASS="BDR">SPECD</TD><TD>대성 교역 ㈜</TD><TD>황영신</TD><TD>대한민국</TD><TD>(02)184-1484</TD></TR><TR><TD CLASS="BDR">SPLIR</TD><TD>세일 상사 ㈜</TD><TD>김재균</TD><TD>대한민국</TD><TD>(031)11-9438</TD></TR><TR><TD CLASS="BDR">SUPRD</TD><TD>삼양 상사 ㈜</TD><TD>감성동</TD><TD>대한민국</TD><TD>(02)34-1984</TD></TR><TR><TD CLASS="BDR">THEBI</TD><TD>신성 식품 ㈜</TD><TD>김혜령</TD><TD>대한민국</TD><TD>(031)45-1846</TD></TR><TR><TD CLASS="BDR">THECR</TD><TD>몽블랑 백화점 ㈜</TD><TD>박찬희</TD><TD>대한민국</TD><TD>(02)954-1397</TD></TR><TR><TD CLASS="BDR">TOMSP</TD><TD>산타페 ㈜</TD><TD>박영아</TD><TD>대한민국</TD><TD>(031)110-1238</TD></TR><TR><TD CLASS="BDR">TORTU</TD><TD>한진 교역 ㈜</TD><TD>박민희</TD><TD>대한민국</TD><TD>(02)555-2933</TD></TR><TR><TD CLASS="BDR">TRADH</TD><TD>국제 무역 ㈜</TD><TD>심영국</TD><TD>대한민국</TD><TD>(02)345-1945</TD></TR><TR><TD CLASS="BDR">TRAIH</TD><TD>삼영 식품 ㈜</TD><TD>배한석</TD><TD>대한민국</TD><TD>(02)31-0345</TD></TR><TR><TD CLASS="BDR">VAFFE</TD><TD>천지 교역 ㈜</TD><TD>한민정</TD><TD>대한민국</TD><TD>(02)456-5667</TD></TR><TR><TD CLASS="BDR">VICTE</TD><TD>삼왕 통상 ㈜</TD><TD>최지한</TD><TD>대한민국</TD><TD>(031)58-1984</TD></TR><TR><TD CLASS="BDR">VINET</TD><TD>해바라기 백화점 ㈜</TD><TD>채송아</TD><TD>대한민국</TD><TD>(02)222-2243</TD></TR><TR><TD CLASS="BDR">WANDK</TD><TD>언더우드 상사 ㈜</TD><TD>정승화</TD><TD>대한민국</TD><TD>(02)132-3845</TD></TR><TR><TD CLASS="BDR">WARTH</TD><TD>이화 무역 ㈜</TD><TD>홍현아</TD><TD>대한민국</TD><TD>(031)57-1934</TD></TR><TR><TD CLASS="BDR">WELLI</TD><TD>금화 유통 ㈜</TD><TD>강미란</TD><TD>대한민국</TD><TD>(051)555-5111</TD></TR><TR><TD CLASS="BDR">WHITC</TD><TD>신흥 교역 ㈜</TD><TD>천동석</TD><TD>대한민국</TD><TD>(02)222-1113</TD></TR><TR><TD CLASS="BDR">WILMK</TD><TD>미주 상사 ㈜</TD><TD>박춘심</TD><TD>대한민국</TD><TD>(02)112-4864</TD></TR><TR><TD CLASS="BDR">WOLZA</TD><TD>프랑소아 백화점 ㈜</TD><TD>이화란</TD><TD>대한민국</TD><TD>(061)643-2871</TD></TR></TABLE></BODY></HTML>
-------------------------------------------------------------
실행 후 화면에 나타나는 Excel파일의 내용은 다음과 같습니다.
-------------------------------------------------------------
Customer ID Company Contact Country Phone
ALFKI 신영상사 ㈜ 한석규 대한민국 (051)575-5776
ANATR 원창 ㈜ 황영순 대한민국 (02)681-6889
ANTON 동광 통상 ㈜ 조자룡 대한민국 (02)989-9889
AROUT 경성 트레이딩 ㈜ 구재석 대한민국 (031)76-4568
BERGS 정금 상사 ㈜ 최영희 대한민국 (041)92-3778
BLAUS 협우 상사 ㈜ 손미선 대한민국 (02)211-1234
BLONP 베네디스 유통 ㈜ 장선희 대한민국 (02)111-2954
BOLID 삼화 상사 ㈜ 정영일 대한민국 (051)4-1945
BONAP 서주 무역 ㈜ 문익한 대한민국 (02)497-4896
BOTTM 태강 교역 ㈜ 문흥미 대한민국 (051)45-9483
BSBEV 월드 링크 ㈜ 이강주 대한민국 (051)342-3333
CACTU 혜성 백화점 ㈜ 박광준 대한민국 (02)43-4486
CENTC 진주 백화점 ㈜ 홍성주 대한민국 (031)44-3687
CHOPS 동남 상사 ㈜ 강태준 대한민국 (02)134-5897
COMMI 대진 상사 ㈜ 천용만 대한민국 (02)878-9174
CONSH ITM ㈜ 남궁익선 대한민국 (02)489-9184
DRACD 극동 무역 ㈜ 강민수 대한민국 (02)978-1984
DUMON 양정 물산 ㈜ 주진국 대한민국 (02)444-2971
EASTC 성신 교역 ㈜ 성병재 대한민국 (041)487-4971
................................
................................
................................
===========================
다음은 C# 소스 코드 입니다.
===========================
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Xml;
using Excel;
namespace XMLExam
{
/// <summary>
/// Form1에 대한 요약 설명입니다.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows Form 디자이너 지원에 필요합니다.
//
InitializeComponent();
//
// TODO: InitializeComponent를 호출한 다음 생성자 코드를 추가합니다.
//
}
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form 디자이너에서 생성한 코드
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Font = new System.Drawing.Font("굴림", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(129)));
this.button1.Location = new System.Drawing.Point(8, 24);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(392, 88);
this.button1.TabIndex = 0;
this.button1.Text = "실행 전에 Customer.xsl 파일을 만들어야 합니다.";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(416, 142);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 해당 응용 프로그램의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
System.Windows.Forms.Application.Run(new Form1());
}
//버튼을 클릭하는 순간에 mdb(NorthWind.mdb) 파일을 읽어 DataSet에 넣은 후
//DataSet의 내용을 Customer.xml 파일로 만들어 Customer.xsl 파일을 통해 필터링해
//Customer.xsl 파일을 만든다.
// 이러한 처리의 장점은 xsl을 여러 개 만들어 넣음으로서 다양한 형태의 구사가 가능하며
// 만들어진 xml 파일은 브라우저를 통해 필터링 되기 전/후의 모습을 직접 확인 가능 합니다.
private void button1_Click(object sender, System.EventArgs e)
{
OleDbConnection objConn = null;
try
{
string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb";
objConn = new OleDbConnection (strConn);
objConn.Open();
string SQL="Select CustomerID, CompanyName, ContactName, Country, Phone from Customers";
OleDbCommand objCmd = new OleDbCommand(SQL, objConn);
OleDbDataAdapter objAdapter = new OleDbDataAdapter();
objAdapter.SelectCommand = objCmd;
DataSet objDataset = new DataSet();
//DataSet을 만든다. 현재 DataSet에는 Customers Table의 내용이 있다.
objAdapter.Fill(objDataset);
string strPath="Customer.xml";
FileStream fs = new FileStream(strPath, System.IO.FileMode.Create);
XmlTextWriter xtw = new XmlTextWriter(fs, System.Text.Encoding.Unicode);
//메모리에 존재 하는 DataSet을 이용하여 Customer.xml 파일을 만들자.
XmlDataDocument xmlDoc = new XmlDataDocument(objDataset);
System.Xml.Xsl.XslTransform xslTran = new System.Xml.Xsl.XslTransform();
xslTran.Load("Customer.xsl");
//XML 문서를 변환기 파일(XSL)을 통해 XMLTextWriter에 의해 인코딩 형식에 맞게
//변환 합니다.
xslTran.Transform(xmlDoc, null, xtw);
Excel.Application oExcel = new Excel.Application();
oExcel.Visible=true;
oExcel.UserControl=true;
Excel.Workbooks oBooks = oExcel.Workbooks;
//변환된 XML을 이용하여 엑셀 파일을 작성
object oOpt = System.Reflection.Missing.Value;
oBooks.Open( @"D:\강의자료\울산\예제\C#\C#(2)\ADO\ADOandXML(3)\XMLExam\XMLExam\bin\Debug\Customer.xml"
,oOpt,oOpt,oOpt,oOpt,oOpt
,oOpt,oOpt,oOpt,oOpt,oOpt
,oOpt,oOpt,oOpt,oOpt);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
objConn.Close();
}
}
}
}
댓글 없음:
댓글 쓰기