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

Çǵå¹é º¸³»±â