現在オフラインです。再接続するためにインターネットの接続を待っています

Visual C# .NET を使用して XML データを Microsoft Excel 2002 または Microsoft Excel 2003 に転送する方法

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

この記事は、以前は次の ID で公開されていました: JP307029
Microsoft Visual Basic .NET については、次の資料を参照してください。307021
概要
Excel 2002 には、XML (Extensible Markup Language) 形式のファイルを開くための機能が導入されています。整形式 (well-formed) の XML ファイルは、ユーザー インターフェイスから、またはコードを記述することによって直接 Excel 2002 または Excel 2003 で開くことができます。

Microsoft Visual C# 2005 または Microsoft Visual C# .NET を使用すると、Excel の XML 機能を利用してシームレスにデータをブックに転送し、書式や配置を自由に設定したデータを提供することができます。この資料は、こうした作業を行う方法を示したものです。

Excel 2002 または Excel 2003 で使用する XML を DataSet から生成する

ここでは、DataSet オブジェクトを作成し、その中にあるデータを WriteXML メソッドで XML ファイルにエクスポートする方法を示します。生成される 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 アプリケーション] をクリックし、[OK] をクリックします。デフォルトで Form1 が作成されます。
  2. [表示] メニューの [ツールボックス] をクリックしてツールボックスを表示し、Form1 にボタンを追加します。
  3. [Button1] をダブルクリックします。フォームのコード ウィンドウが表示されます。
  4. 次の using ディレクティブを Form1.cs の先頭部分に追加します。
    using System.Data.OleDb;using System.Xml;					
  5. 次の private メンバ変数を 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 [得意先コード], 得意先名, 担当者名, "                + "都道府県, 電話番号 from 得意先", 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 では、コードを変更する必要があります。Windows フォーム プロジェクトを作成すると、Visual C# によってデフォルトでフォームが 1 つ追加されます。フォームの名前は Form1 で、フォームを表す 2 つのファイルには Form1.cs および Form1.Designer.cs という名前が付けられます。Form1.cs にはコードを記述します。ツールボックスからコントロールをドラッグ アンド ドロップすると、Windows フォーム デザイナにより、それらの動作を実装するためのコードが Form1.Designer.cs ファイルに書き込まれます。

    Visual C# 2005 の Windows フォーム デザイナの詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。
  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">得意先コード</TD>          <TD CLASS="HDR">得意先名</TD>          <TD CLASS="HDR">担当者</TD>          <TD CLASS="HDR">都道府県</TD>          <TD CLASS="HDR">電話番号</TD>          <xsl:for-each select="NewDataSet/Table">            <TR>              <TD><xsl:value-of select="得意先コード"/></TD>              <TD><xsl:value-of select="得意先名"/></TD>              <TD><xsl:value-of select="担当者名"/></TD>              <TD><xsl:value-of select="都道府県"/></TD>              <TD><xsl:value-of select="電話番号"/></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] を選択して、[OK] をクリックします。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 Object 10.0 Library] または [Microsoft Excel Object 11.0 Library] をクリックし、[選択] をクリックします。
    3. [参照の追加] ダイアログ ボックスで [OK] をクリックして、選択を確定します。選択したライブラリのラッパーを生成するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。
  2. 次の using ディレクティブを Form1.cs の先頭部分に追加します。
    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 [得意先コード], 得意先名, 担当者名, " 	+ "都道府県, 電話番号 from 得意先", 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 argumentsoBooks.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 メソッドが公開されています。しかし、オートメーション クライアントからこのメソッドを使用すると問題が発生することがわかっているため、上記の例ではこのメソッドを呼び出していません。Excel マクロから呼び出した場合は、OpenXML メソッドは仕様どおりに機能します。ただし、このメソッドをオートメーション クライアントから呼び出すと、StyleSheet パラメータは無視されます。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
307230 [BUG] Excel 2002 のオートメーションで OpenXML メソッドの StyleSheets パラメータが無視される
関連情報
詳細については、以下の「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。
288215 [INFO] Microsoft Excel 2002 と XML
302084 Microsoft Visual C# .NET を使用して Microsoft Excel を自動化する方法
301216 Visual Basic .NET を使用してデータベースから DataSet オブジェクトを取得する方法
306023 Visual C# 2005 または Visual C# .NET を使用してデータを Excel ブックに転送する方法
OpenXML WriteXML XSLTransform transform style sheet
プロパティ

文書番号:307029 - 最終更新日: 12/21/2006 02:32:53 - リビジョン: 7.2

Microsoft Visual C# 2005, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft ADO.NET 1.0, Microsoft Excel 2002 Standard Edition, Microsoft Office Excel 2003

  • kbhowtomaster KB307029
フィードバック