C#를 사용 하 여 Microsoft Excel 2002 또는 Microsoft Excel 2003에 XML 데이터를 전송 하는 방법

이 문서의 Microsoft Visual Basic.NET 버전, 307021 를 참조 하십시오.

요약

Excel 2002에서는 확장 태그 언어 (XML) 형식으로 파일을 열기 위한 기능을 소개 합니다. 올바른 형식의 XML 파일로 사용자 인터페이스나 코드를 사용 하 여 Excel 2002 나 Excel 2003에서 직접 열 수 있습니다.

Microsoft Visual C# 2005 또는 Microsoft Visual C#.NET에서 완벽 하 게 서식이 지정 된 데이터를 표시 하려면 통합 문서에 데이터를 전송 하려면 Excel의 XML 기능을 이용 하 고 원하는 정렬을 수행할 수 있습니다. 이 문서에서는이 작업을 수행 하는 방법을 보여 줍니다.

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

이 섹션에서는 DataSet 개체를 만들고 XML 파일을 WriteXML 메서드를 사용 하 여 포함 된 데이터를 내보낼 방법을 보여 줍니다. 생성 되는 XML 파일을 Excel에서 직접 열 수 있습니다. 이해를 돕기 위하여 Jet OLEDB 공급자를 사용 하 여 Microsoft Access Northwind 샘플 데이터베이스에서 DataSet 객체가 작성 됩니다. 그러나 비슷한 코드가 Visual C# 2005 또는 Visual C#.NET을 사용 하 여 만든 DataSet 개체를 사용 하 여 작동 합니다.

  1. Microsoft Visual Studio 2005 또는 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);
    }

    참고: Visual Studio 2005의 코드를 변경 해야 합니다. 기본적으로 C# 폼을 프로젝트에 추가 Windows Forms 프로젝트를 만들 때. 폼을 Form1 이라고 합니다. 두 파일 형식을 나타내는 Form1.cs 및 form1. designer.cs 라는. Form1.cs에 코드를 작성 합니다. Form1. designer.cs 파일은 Windows Forms 디자이너가 쓰는 위치 모든 동작을 구현 하는 코드를 컨트롤 도구 상자에서 끌어서 수행

    Visual C# 2005에서 Windows Forms 디자이너에 대 한 자세한 내용은 다음 Microsoft Developer Network (MSDN) 웹 사이트를 방문 하십시오.
  7. F5 키를 눌러 빌드하고 프로그램을 실행 합니다.
  8. XML 파일을 만들려면 Button1 을 클릭 하 여 다음 프로그램을 Form1 닫습니다.
  9. Excel 2002 나 Excel 2003을 시작 하 고 C:\Customers.xml 출력 파일을 엽니다.
  10. 새 통합 문서에서 행과 열에는 XML 구문 분석 방법을 확인 한 다음 파일을 닫고 Excel을 종료 합니다.

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

이 단계를 어떻게 XML 데이터를 Excel 통합 문서에 스타일 시트 (XSL)를 사용 하는 방법을 보여 줍니다.
  1. HTML 편집기 또는 텍스트 편집기 (예: Notepad.exe) 사용, C:\Customers.xsl로 다음과 같은 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'");

    이 코드 줄을 찾습니다 (Customers.xsl) 스타일 시트를 사용 하는 XML 파일 처리 명령을 씁니다.

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

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

이 지금까지 Excel의 사용자 인터페이스를 사용 하 여 해당 XML 파일을 열었습니다. 이 섹션에서는 통합 문서를 프로그래밍 방식으로 열도록 Excel을 자동화 하는 방법을 보여 줍니다. 다음 예제에서는 첫 번째 XML에서 DataSet 개체를 HTML로 변환 하 여 사용자의 개입 없이 변환 된 XML을 여는 방법.
  1. Microsoft Excel 10.0 개체 라이브러리 또는 Microsoft Excel 11.0 개체 라이브러리에대 한 참조를 추가 합니다. 이렇게 하려면, 다음 단계를 수행하십시오.
    1. 프로젝트 메뉴에서 참조 추가클릭 합니다.
    2. COM 탭에서 Microsoft Excel 10.0 개체 라이브러리 또는 Microsoft Excel 11.0 개체 라이브러리 찾아 선택을 클릭 합니다.
    3. 선택한 내용을 적용 합니다 참조 추가 대화 상자에서 확인 을 클릭 합니다. 선택한 라이브러리에 대해 래퍼를 생성할 것인지 묻는 메시지가 나타나면 를 클릭 합니다.
  2. Form1.cs의 맨 위에 다음 using 지시문을 추가 합니다.
    using Excel = Microsoft.Office.Interop.Excel;
  3. Visual C# 2005 또는 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. Excel에서 변환된 된 XML 열에 Button2 클릭 합니다.
참고: Excel 2002 및 Excel 2003 개체 모델에 적용 된 스타일 시트를 사용 하 여 XML 파일을 프로그래밍 방식으로 열 수 있도록 하는 OpenXML 메서드 노출 않습니다, 앞의 예제 사용 하 여 자동화 클라이언트에서이 메서드를 사용 하 여 알려진된 문제가 있기 때문에이 메서드를 호출 하지 않습니다. Excel 매크로에서 호출 하면 예상 대로 작동 하는 OpenXML 메서드 하지만 자동화 클라이언트에서이 메서드는, 스타일 시트 매개 변수가 무시 됩니다.

자세한 내용은 아래 Microsoft 기술 자료의 다음 문서 번호를 클릭하여 참조하십시오.

307230 버그: 스타일 시트 매개 변수 OpenXML 메서드를 Excel 2002를 자동화할 때 무시 됩니다.

참조

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

문서 ID: 307029 - 마지막 검토: 2017. 2. 6. - 수정: 2

피드백