Visual C# .NET을 사용하여 Microsoft Excel 2002에 XML 데이터를 전송하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 307029 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR307029
모두 확대 | 모두 축소

이 페이지에서

요약

Excel 2002에는 XML(Extensible Markup Language) 형식의 파일을 열 수 있는 기능이 추가되었습니다. 적절한 형식의 XML 파일은 사용자 인터페이스나 코드를 사용하여 Excel 2002나 Excel 2003에서 직접 열 수 있습니다.

Visual C# .NET을 사용하면 Excel의 XML 기능을 활용하여 데이터를 통합 문서로 원활하게 보낼 수 있으므로 원하는 서식과 배열로 데이터를 나타낼 수 있습니다. 본 문서에서는 이 작업을 수행하는 방법을 설명합니다.

Excel 2002 또는 Excel 2003에서 사용할 수 있도록 DataSet에서 XML 생성

이 절에서는 DataSet 개체를 만든 다음 WriteXML 메서드를 사용하여 DataSet에 들어 있는 데이터를 XML 파일로 내보내는 방법을 설명합니다. 생성된 XML 파일은 Excel에서 직접 열 수 있습니다. 예시를 위해 DataSet 개체는 Jet OLEDB Provider를 사용하여 Microsoft Access Northwind 예제 데이터베이스에서 만듭니다. 그러나 Visual C# .NET으로 만든 DataSet 개체도 비슷한 코드에서 작동합니다.
  1. Microsoft Visual Studio .NET을 시작합니다. 파일 메뉴에서 새로 만들기를 누른 다음 프로젝트를 누릅니다. Visual C# 프로젝트 형식에서 Windows 응용 프로그램을 선택합니다. 기본적으로 Form1이 만들어집니다.
  2. 보기 메뉴에서 도구 상자를 선택하여 도구 상자를 표시한 다음 Form1에 단추를 추가합니다.
  3. Button1을 두 번 누릅니다. 해당 폼에 대한 코드 창이 나타납니다.
  4. Form1.cs의 맨 위에 다음 using 지시문을 추가합니다.
    using System.Data.OleDb;
    using System.Xml;
    					
  5. Form1 클래스에 다음의 전용 멤버 변수를 추가합니다.
    private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    	+ " C:\\Program Files\\Microsoft Office\\Office10\\Samples\\"
    	+ "Northwind.mdb;";
    					
    참고: 연결 문자열에서 Northwind.mdb의 경로를 해당 설치에 맞게 수정해야 할 수도 있습니다.

  6. 다음 코드를 button1_Click 처리기에 추가합니다.
    //Connect to the data source.
             OleDbConnection objConn = new OleDbConnection (strConn);
             try
             {
                objConn.Open();			
    
                //Fill a dataset with records from the Customers table.
                OleDbCommand objCmd = new OleDbCommand(
                   "Select CustomerID, CompanyName, ContactName, " 
                   + "Country, Phone from Customers", objConn);
                OleDbDataAdapter objAdapter = new OleDbDataAdapter();
                objAdapter.SelectCommand = objCmd;
                DataSet objDataset = new DataSet();
                objAdapter.Fill(objDataset);
    
    
                //Create the FileStream to write with.
                System.IO.FileStream fs = new System.IO.FileStream(
                   "C:\\Customers.xml", System.IO.FileMode.Create);
    
                //Create an XmlTextWriter for the FileStream.
                System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
                   fs, System.Text.Encoding.Unicode);
    
                //Add processing instructions to the beginning of the XML file, one 
                //of which indicates a style sheet.
                xtw.WriteProcessingInstruction("xml", "version='1.0'");
                //xtw.WriteProcessingInstruction("xml-stylesheet", 
                  // "type='text/xsl' href='customers.xsl'");
    
                //Write the XML from the dataset to the file.
                objDataset.WriteXml(xtw);
                xtw.Close();
    
                //Close the database connection.
                objConn.Close();
             }
             catch (System.Exception ex)
             {
                MessageBox.Show(ex.Message);
             } 
    					
  7. F5 키를 눌러 프로그램을 빌드하고 실행합니다.
  8. Button1을 눌러 XML 파일을 만든 다음 Form1을 닫아 프로그램을 종료합니다.
  9. Excel 2002나 Excel 2003을 시작하고 C:\Customers.xml 출력 파일을 엽니다.
  10. XML이 새 통합 문서에서 행과 열로 구문 분석되는 과정을 확인한 다음 파일을 닫고 Excel을 끝냅니다.

스타일시트를 사용하여 XML 서식 지정

이 단계에서는 스타일시트(XSL)를 사용하여 Excel 통합 문서에서 XML 데이터의 서식 지정 및 정렬 방식을 변환하는 방법을 보여 줍니다.
  1. HTML 편집기나 텍스트 편집기(예: Notepad.exe)를 사용하여 다음 XSL을 C:\Customers.xsl로 저장합니다.
    <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 }
            </STYLE>
          </HEAD>
          <BODY>
            <TABLE>
              <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" 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><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>
    					
  2. button1_Click 처리기에서 다음 코드 줄의 주석 처리를 해제합니다.
    xtw.WriteProcessingInstruction("xml-stylesheet", 
    	"type='text/xsl' href='customers.xsl'");
    					
    이 코드 줄은 Excel에서 스타일시트(Customers.xsl)를 찾는 데 사용하는 XML 파일에 처리 명령을 기록합니다.

  3. F5 키를 눌러 프로그램을 빌드하고 실행합니다.
  4. Button1을 눌러 XML 파일을 만든 다음 Form1을 닫아 프로그램을 종료합니다.
  5. Excel 2002나 Excel 2003을 시작하고 C:\Customers.xml 출력 파일을 엽니다.
  6. Excel에서 XML에 있는 스타일시트에 대한 처리 명령을 확인하므로 사용자가 해당 파일을 열 때 확인 대화 상자가 표시됩니다. XML 가져오기 대화 상자에서 다음 스타일시트를 적용하여 파일 열기를 선택합니다. 목록에서 Customers.xsl를 선택하고 확인을 누릅니다. 스타일시트에 따라 열이 정렬되고 XML 데이터의 서식이 지정됩니다.
  7. 파일을 닫고 Excel을 끝냅니다.

코드를 사용하여 변형된 XML 열기

지금까지 Excel의 사용자 인터페이스를 사용하여 XML 파일을 열었습니다. 이 절에서는 통합 문서를 프로그래밍 방식으로 열도록 Excel을 자동화하는 방법을 보여 줍니다. 다음 예제에서는 먼저 DataSet 개체의 XML을 HTML로 변환하여 사용자 개입 없이 변환된 XML을 여는 방법을 보여 줍니다.
  1. Microsoft Excel 10.0 Object Library 또는 Microsoft Excel 11.0 Object Library에 대한 참조를 추가합니다. 이렇게 하려면 다음과 같이 하십시오.
    1. 프로젝트 메뉴에서 참조 추가를 누릅니다.
    2. COM 탭에서 Microsoft Excel 10.0 Object Library 또는 Microsoft Excel 11.0 Object Library를 찾은 다음 선택을 누릅니다.
    3. 참조 추가 대화 상자에서 확인을 눌러 선택한 내용을 적용합니다. 선택한 라이브러리에 대해 래퍼를 생성할 것인지 묻는 메시지가 표시되면 를 누릅니다.
  2. Form1.cs의 맨 위에 다음 using 지시문을 추가합니다.
    using Excel = Microsoft.Office.Interop.Excel;
    					
  3. Visual C# .NET 프로젝트에서 Form1에 다른 단추를 추가합니다.
  4. Button2를 두 번 누릅니다. 폼에 대한 코드 창이 나타나면 Button2_Click 처리기에 다음 코드를 추가합니다.
    //Connect to the data source.
    OleDbConnection objConn = new OleDbConnection (strConn);
    objConn.Open();			
    
    //Fill a dataset with records from the Customers table.
    OleDbCommand objCmd = new OleDbCommand(
    	"Select CustomerID, CompanyName, ContactName, " 
    	+ "Country, Phone from Customers", objConn);
    OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    objAdapter.SelectCommand = objCmd;
    DataSet objDataset = new DataSet();
    objAdapter.Fill(objDataset);
    
    //Create the FileStream to write with.
    System.IO.FileStream fs = new System.IO.FileStream(
    	"C:\\Customers.htm", System.IO.FileMode.Create);
    
    //Create an XmlTextWriter for the FileStream.
    System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
    	fs, System.Text.Encoding.Unicode);
    
    //Transform the XML using the stylesheet.
    XmlDataDocument xmlDoc = new XmlDataDocument(objDataset);
    System.Xml.Xsl.XslTransform xslTran = new System.Xml.Xsl.XslTransform();
    xslTran.Load("C:\\Customers.xsl");
    xslTran.Transform(xmlDoc, null, xtw);
    
    //Open the HTML file in Excel.
    Excel.Application oExcel = new Excel.Application();
    oExcel.Visible=true;
    oExcel.UserControl=true;
    Excel.Workbooks oBooks = oExcel.Workbooks;
    object oOpt = System.Reflection.Missing.Value; //for optional arguments
    oBooks.Open("c:\\customers.htm", oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt);
    
    					
  5. F5 키를 눌러 프로그램을 빌드하고 실행합니다.
  6. Button2를 눌러 변환된 XML을 Excel에서 엽니다.
참고: Excel 2002 및 Excel 2003 개체 모델에서는 스타일시트가 적용된 XML 파일을 프로그래밍 방식으로 열 수 있도록 하는 OpenXML 메서드를 제공하지만, 자동화 클라이언트에서 이 메서드를 사용할 때 문제가 발생하는 것으로 알려져 있으므로 앞에서 제공된 예제에서는 이 메서드를 호출하지 않습니다. OpenXML 메서드는 Excel 매크로에서 호출될 때 예상대로 작동하지만 이 메서드가 자동화 클라이언트에서 호출되면 StyleSheet 매개 변수가 무시됩니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
307230 BUG: Excel 2002를 자동화할 때 OpenXML 메서드의 StyleSheets 매개 변수가 무시된다

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
288215 INFO: Microsoft Excel 2002 및 XML
302084 Microsoft Visual C# .NET을 통해 Microsoft Excel을 자동화하는 방법
301216 HOWTO: Visual Basic .NET을 사용하여 데이터베이스에서 DataSet 개체 채우기
306023 Visual C# .NET을 사용하여 Excel 통합 문서에 데이터를 전송하는 방법




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 307029 - 마지막 검토: 2006년 1월 20일 금요일 - 수정: 6.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ADO.NET 1.0
  • Microsoft Excel 2002 Standard Edition
키워드:?
kbhowtomaster KB307029

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com