XML(Extensible Markup Language)はHTMLに似ていますが、オブジェクトの定義に異なるタグを使用します。ソフトウェアやハードウェアツールに依存せずにデータを保存および転送するために使用されます。場合によっては、さらに処理するために、XMLからExcel(XLSXまたはXLS)にデータをエクスポートする必要があります。 Excelファイルは、データの保存と整理に広く使用されています。この記事では、C#を使用してXMLをExcelに変換する方法を学習します。
この記事では、次のトピックについて説明します。
C#XMLからExcelへのコンバーターAPI
XMLをExcelに変換するには、Aspose.Cells for .NETAPIを使用します。これは、Microsoft Excelアプリケーションを必要とせずに、プログラムでExcel自動化機能を実行できる機能豊富で強力なAPIです。
APIのWorkbookクラスは、Excelスプレッドシートを表します。ネイティブExcelファイルを開いて保存することができます。また、他のワークブックからデータをコピーし、2つのワークブックを結合して、Excelスプレッドシートを保護する方法も提供します。このクラスでは、ImportXml()メソッドを使用してXMLデータファイルをブックにインポートできます。このクラスのsave()メソッドを使用すると、指定した形式でブックを保存できます。
APIのDLLをダウンロードするか、NuGetを使用してインストールしてください。
PM> Install-Package Aspose.Cells
C#でXMLをExcelに変換する
以下の手順に従って、XMLデータファイルをExcelブックに簡単に変換できます。
- Workbookクラスのインスタンスを作成します。
- ImportXml()メソッドを呼び出して、XMLファイルをインポートします。
- Save()メソッドを使用してブックをXLSXファイルとして保存します。出力ファイルのパスを引数として取ります。
以下のコード例は、C#を使用してXMLをExcelに変換する方法を示しています。
// このコード例は、ExcelでXMLデータファイルをインポートする方法を示しています。
// データフォルダのパス
var dataDir = @"C:\Files\";
// Workbookクラスのインスタンスを作成します
Workbook workbook = new Workbook();
// XMLをワークブックにインポートする
// XMLファイルのパス、宛先シート名、宛先の行と列を引数として取ります。
workbook.ImportXml(dataDir + "Catalog.xml", "Sheet1", 0, 0);
// ブックをXLSXとして保存します
workbook.Save(dataDir + "data_xml.xlsx", Aspose.Cells.SaveFormat.Auto);
C#でXMLからExcelに特定の列をエクスポートする
データをテーブルにレンダリングするには、HTMLレイアウトでXSLTファイルを作成する必要があります。 XSLファイルは、XMLドキュメントを他のドキュメントタイプに変換し、出力をフォーマットするために使用できるスタイルシートです。 Excelに変換するために必要な列のみをXSLTファイルに含めます。これを行うのに役立つXSLファイルは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
<th style="text-align:left">Price</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="artist"/>
</td>
<td>
<xsl:value-of select="price"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
以下の手順に従って、XMLデータファイルからExcelブックに特定の列を取得できます。
- まず、File.ReadAllText()メソッドを使用してXMLファイルを読み取ります。
- 次に、File.ReadAllText()メソッドを使用してXSLTファイルを読み取ります。
- 次に、XslCompiledTransformクラスインスタンスを使用してXMLコンテンツを変換します。
- その後、AutoFitRowsやAutoFitColumnsなどのさまざまなワークシート設定を指定します。
- Save()メソッドを使用してブックをXLSXファイルとして保存します。出力ファイルのパスを引数として取ります。
以下のコード例は、C#を使用して特定の列をXMLからExcelに変換する方法を示しています。
// このコード例は、ExcelのXMLデータファイルから特定の列をインポートする方法を示しています。
// データフォルダのパス
var dataDir = @"C:\Files\";
// XMLファイルの内容を読む
var XmlContent = File.ReadAllText(dataDir + "Catalog.xml");
// XSLTファイルの内容を読む
var XsltContent = File.ReadAllText(dataDir + "CatalogXSLX.xslt");
// XMLを変換し、MemoryStreamでコンテンツを取得します
var xmlContent = TransformXml(XmlContent, XsltContent);
// ブックを作成する
var workbook = new Workbook(xmlContent);
workbook.Worksheets[0].AutoFitRows();
workbook.Worksheets[0].AutoFitColumns();
// ブックをXLSXとして保存します
workbook.Save(dataDir + "SpecificColumnsData_xml.xlsx", Aspose.Cells.SaveFormat.Auto);
無料ライセンスを取得する
無料の一時ライセンスを取得して、評価の制限なしでライブラリを試すことができます。
結論
この記事では、C#でXMLファイルからExcelにデータをインポートする方法を学びました。また、XMLファイルから特定の列データを抽出してプログラムでExcelに変換する方法も確認しました。さらに、ドキュメントを使用して、Aspose.Cells for .NET APIについて詳しく知ることができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。