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 °³Ã¼µµ ºñ½ÁÇÑ Äڵ忡¼ ÀÛµ¿ÇÕ´Ï´Ù.
- Microsoft Visual Studio .NETÀ» ½ÃÀÛÇÕ´Ï´Ù. ÆÄÀÏ ¸Þ´º¿¡¼ »õ·Î ¸¸µé±â¸¦ ´©¸¥ ´ÙÀ½ ÇÁ·ÎÁ§Æ®¸¦ ´©¸¨´Ï´Ù. Visual C# ÇÁ·ÎÁ§Æ® Çü½Ä¿¡¼ Windows ÀÀ¿ë ÇÁ·Î±×·¥À» ¼±ÅÃÇÕ´Ï´Ù. ±âº»ÀûÀ¸·Î Form1ÀÌ ¸¸µé¾îÁý´Ï´Ù.
- º¸±â ¸Þ´º¿¡¼ µµ±¸ »óÀÚ¸¦ ¼±ÅÃÇÏ¿© µµ±¸ »óÀÚ¸¦ Ç¥½ÃÇÑ ´ÙÀ½ Form1¿¡ ´ÜÃ߸¦ Ãß°¡ÇÕ´Ï´Ù.
- Button1À» µÎ ¹ø ´©¸¨´Ï´Ù. ÇØ´ç Æû¿¡ ´ëÇÑ ÄÚµå âÀÌ ³ªÅ¸³³´Ï´Ù.
- Form1.csÀÇ ¸Ç À§¿¡ ´ÙÀ½ using Áö½Ã¹®À» Ãß°¡ÇÕ´Ï´Ù.
using System.Data.OleDb;
using System.Xml;
- Form1 Ŭ·¡½º¿¡ ´ÙÀ½ÀÇ Àü¿ë ¸â¹ö º¯¼ö¸¦ Ãß°¡ÇÕ´Ï´Ù.
private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ " C:\\Program Files\\Microsoft Office\\Office10\\Samples\\"
+ "Northwind.mdb;";
Âü°í: ¿¬°á ¹®ÀÚ¿¿¡¼ Northwind.mdbÀÇ °æ·Î¸¦ ÇØ´ç ¼³Ä¡¿¡ ¸Â°Ô ¼öÁ¤ÇØ¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
- ´ÙÀ½ Äڵ带 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);
}
- F5 ۸¦ ´·¯ ÇÁ·Î±×·¥À» ºôµåÇÏ°í ½ÇÇàÇÕ´Ï´Ù.
- Button1À» ´·¯ XML ÆÄÀÏÀ» ¸¸µç ´ÙÀ½ Form1À» ´Ý¾Æ ÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù.
- Excel 2002³ª Excel 2003À» ½ÃÀÛÇϰí C:\Customers.xml Ãâ·Â ÆÄÀÏÀ» ¿±´Ï´Ù.
- XMLÀÌ »õ ÅëÇÕ ¹®¼¿¡¼ Çà°ú ¿·Î ±¸¹® ºÐ¼®µÇ´Â °úÁ¤À» È®ÀÎÇÑ ´ÙÀ½ ÆÄÀÏÀ» ´Ý°í ExcelÀ» ³¡³À´Ï´Ù.
½ºÅ¸ÀÏ½ÃÆ®¸¦ »ç¿ëÇÏ¿© XML ¼½Ä ÁöÁ¤
ÀÌ ´Ü°è¿¡¼´Â ½ºÅ¸ÀÏ½ÃÆ®(XSL)¸¦ »ç¿ëÇÏ¿© Excel ÅëÇÕ ¹®¼¿¡¼ XML µ¥ÀÌÅÍÀÇ ¼½Ä ÁöÁ¤ ¹× Á¤·Ä ¹æ½ÄÀ» º¯È¯ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
- 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>
- button1_Click 󸮱⿡¼ ´ÙÀ½ ÄÚµå ÁÙÀÇ ÁÖ¼® 󸮸¦ ÇØÁ¦ÇÕ´Ï´Ù.
xtw.WriteProcessingInstruction("xml-stylesheet",
"type='text/xsl' href='customers.xsl'");
ÀÌ ÄÚµå ÁÙÀº Excel¿¡¼ ½ºÅ¸ÀÏ½ÃÆ®(Customers.xsl)¸¦ ã´Â µ¥ »ç¿ëÇÏ´Â XML ÆÄÀÏ¿¡ ó¸® ¸í·ÉÀ» ±â·ÏÇÕ´Ï´Ù.
- F5 ۸¦ ´·¯ ÇÁ·Î±×·¥À» ºôµåÇÏ°í ½ÇÇàÇÕ´Ï´Ù.
- Button1À» ´·¯ XML ÆÄÀÏÀ» ¸¸µç ´ÙÀ½ Form1À» ´Ý¾Æ ÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù.
- Excel 2002³ª Excel 2003À» ½ÃÀÛÇϰí C:\Customers.xml Ãâ·Â ÆÄÀÏÀ» ¿±´Ï´Ù.
- Excel¿¡¼ XML¿¡ ÀÖ´Â ½ºÅ¸ÀÏ½ÃÆ®¿¡ ´ëÇÑ Ã³¸® ¸í·ÉÀ» È®ÀÎÇϹǷΠ»ç¿ëÀÚ°¡ ÇØ´ç ÆÄÀÏÀ» ¿ ¶§ È®ÀÎ ´ëÈ »óÀÚ°¡ Ç¥½ÃµË´Ï´Ù. XML °¡Á®¿À±â ´ëÈ »óÀÚ¿¡¼ ´ÙÀ½ ½ºÅ¸ÀÏ½ÃÆ®¸¦ Àû¿ëÇÏ¿© ÆÄÀÏ ¿±â¸¦ ¼±ÅÃÇÕ´Ï´Ù. ¸ñ·Ï¿¡¼ Customers.xsl¸¦ ¼±ÅÃÇϰí È®ÀÎÀ» ´©¸¨´Ï´Ù. ½ºÅ¸ÀÏ½ÃÆ®¿¡ µû¶ó ¿ÀÌ Á¤·ÄµÇ°í XML µ¥ÀÌÅÍÀÇ ¼½ÄÀÌ ÁöÁ¤µË´Ï´Ù.
- ÆÄÀÏÀ» ´Ý°í ExcelÀ» ³¡³À´Ï´Ù.
Äڵ带 »ç¿ëÇÏ¿© º¯ÇüµÈ XML ¿±â
Áö±Ý±îÁö ExcelÀÇ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© XML ÆÄÀÏÀ» ¿¾ú½À´Ï´Ù. ÀÌ Àý¿¡¼´Â ÅëÇÕ ¹®¼¸¦ ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î ¿µµ·Ï ExcelÀ» ÀÚµ¿ÈÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼´Â ¸ÕÀú
DataSet °³Ã¼ÀÇ XMLÀ» HTML·Î º¯È¯ÇÏ¿© »ç¿ëÀÚ °³ÀÔ ¾øÀÌ º¯È¯µÈ XMLÀ» ¿©´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
- Microsoft Excel 10.0 Object Library ¶Ç´Â Microsoft Excel 11.0 Object Library¿¡ ´ëÇÑ ÂüÁ¶¸¦ Ãß°¡ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇϽʽÿÀ.
- ÇÁ·ÎÁ§Æ® ¸Þ´º¿¡¼ ÂüÁ¶ Ãß°¡¸¦ ´©¸¨´Ï´Ù.
- COM ÅÇ¿¡¼ Microsoft Excel 10.0 Object Library ¶Ç´Â Microsoft Excel 11.0 Object Library¸¦ ãÀº ´ÙÀ½ ¼±ÅÃÀ» ´©¸¨´Ï´Ù.
- ÂüÁ¶ Ãß°¡ ´ëÈ »óÀÚ¿¡¼ È®ÀÎÀ» ´·¯ ¼±ÅÃÇÑ ³»¿ëÀ» Àû¿ëÇÕ´Ï´Ù. ¼±ÅÃÇÑ ¶óÀ̺귯¸®¿¡ ´ëÇØ ·¡ÆÛ¸¦ »ý¼ºÇÒ °ÍÀÎÁö ¹¯´Â ¸Þ½ÃÁö°¡ Ç¥½ÃµÇ¸é ¿¹¸¦ ´©¸¨´Ï´Ù.
- Form1.csÀÇ ¸Ç À§¿¡ ´ÙÀ½ using Áö½Ã¹®À» Ãß°¡ÇÕ´Ï´Ù.
using Excel = Microsoft.Office.Interop.Excel;
- Visual C# .NET ÇÁ·ÎÁ§Æ®¿¡¼ Form1¿¡ ´Ù¸¥ ´ÜÃ߸¦ Ãß°¡ÇÕ´Ï´Ù.
- 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);
- F5 ۸¦ ´·¯ ÇÁ·Î±×·¥À» ºôµåÇÏ°í ½ÇÇàÇÕ´Ï´Ù.
- Button2¸¦ ´·¯ º¯È¯µÈ XMLÀ» Excel¿¡¼ ¿±´Ï´Ù.
Âü°í: Excel 2002 ¹× Excel 2003 °³Ã¼ ¸ðµ¨¿¡¼´Â ½ºÅ¸ÀÏ½ÃÆ®°¡ Àû¿ëµÈ XML ÆÄÀÏÀ» ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î ¿ ¼ö ÀÖµµ·Ï ÇÏ´Â
OpenXML ¸Þ¼µå¸¦ Á¦°øÇÏÁö¸¸, ÀÚµ¿È Ŭ¶óÀÌ¾ðÆ®¿¡¼ ÀÌ ¸Þ¼µå¸¦ »ç¿ëÇÒ ¶§ ¹®Á¦°¡ ¹ß»ýÇÏ´Â °ÍÀ¸·Î ¾Ë·ÁÁ® ÀÖÀ¸¹Ç·Î ¾Õ¿¡¼ Á¦°øµÈ ¿¹Á¦¿¡¼´Â ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÏÁö ¾Ê½À´Ï´Ù.
OpenXML ¸Þ¼µå´Â Excel ¸ÅÅ©·Î¿¡¼ È£ÃâµÉ ¶§ ¿¹»ó´ë·Î ÀÛµ¿ÇÏÁö¸¸ ÀÌ ¸Þ¼µå°¡ ÀÚµ¿È Ŭ¶óÀÌ¾ðÆ®¿¡¼ È£ÃâµÇ¸é
StyleSheet ¸Å°³ º¯¼ö°¡ ¹«½ÃµË´Ï´Ù.
ÀÚ¼¼ÇÑ ³»¿ëÀº Microsoft ±â¼ú ÀÚ·áÀÇ ´ÙÀ½ ¹®¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
307230
(http://support.microsoft.com/kb/307230/
)
BUG: Excel 2002¸¦ ÀÚµ¿ÈÇÒ ¶§ OpenXML ¸Þ¼µåÀÇ StyleSheets ¸Å°³ º¯¼ö°¡ ¹«½ÃµÈ´Ù
ÀÚ¼¼ÇÑ ³»¿ëÀº Microsoft ±â¼ú ÀÚ·áÀÇ ´ÙÀ½ ¹®¼¸¦ ÂüÁ¶ÇϽʽÿÀ.
288215
(http://support.microsoft.com/kb/288215/
)
INFO: Microsoft Excel 2002 ¹× XML
302084
(http://support.microsoft.com/kb/302084/
)
Microsoft Visual C# .NETÀ» ÅëÇØ Microsoft ExcelÀ» ÀÚµ¿ÈÇÏ´Â ¹æ¹ý
301216
(http://support.microsoft.com/kb/301216/
)
HOWTO: Visual Basic .NETÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡¼ DataSet °³Ã¼ ä¿ì±â
306023
(http://support.microsoft.com/kb/306023/
)
Visual C# .NETÀ» »ç¿ëÇÏ¿© Excel ÅëÇÕ ¹®¼¿¡ µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ´Â ¹æ¹ý
Microsoft Á¦Ç° °ü·Ã ±â¼ú Àü¹®°¡µé°ú ¿Â¶óÀÎÀ¸·Î Á¤º¸¸¦ ±³È¯ÇϽ÷Á¸é Microsoft ´º½º ±×·ì
(http://support.microsoft.com/newsgroups/default.aspx)
¿¡ Âü¿©ÇϽñ⠹ٶø´Ï´Ù.±â¼ú ÀÚ·á: 307029 - ¸¶Áö¸· °ËÅä: 2006³â 1¿ù 20ÀÏ ±Ý¿äÀÏ - ¼öÁ¤: 6.1
º» ¹®¼ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
- Microsoft Visual C# .NET 2002 Standard Edition
- Microsoft ADO.NET 1.0
- Microsoft Excel 2002 Standard Edition