XML は異なるシステム間でデータを交換するためによく使用されます。一方、Excel はデータ分析やレポート作成のための広く認識された形式です。XML データを Excel に変換することで、Excel の強力な機能を活用してデータをより効果的に分析し、視覚化できます。この変換プロセスは、金融、医療、e コマースなど、さまざまな業界で重要です。
この記事では、Spire.XLS for .NET を使用して C# で XML を Excel および PDF に変換する方法を学びます。
Spire.XLS for .NET をインストールします
まず、Spire.XLS for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.XLS
XML 構造の理解: 要素、属性、データ
XML を Excel に変換する前に、XML ファイルの構造を理解することが重要です。XML は、タグを使用して要素、属性、データを定義するマークアップ言語です。これらのコンポーネントを以下のように分類できます。
- 要素: XML の基本構成要素で、開始タグと終了タグで定義され、データや他の要素を含むことができます。
<person>
<name>鈴木美咲</name>
<age>30</age>
</person>
- 属性: 要素に関する追加情報を提供します。要素の開始タグ内で指定されます。
<person id="1">
<name>鈴木美咲</name>
<age>30</age>
</person>
C# で XML を Excel に変換する
.NET では、XML ファイルを操作するためのクラスを提供する System.Xml.Linq 名前空間を使用できます。主に使用されるクラスは XDocument で、XML ドキュメントを簡単に読み込み、操作できます。
以下はその例です:
- C#
using System;
using System.Xml.Linq;
class Program
{
static void Main()
{
// XMLファイルを読み込む
XDocument doc = XDocument.Load("data.xml");
XElement root = doc.Root;
// 要素を繰り返し処理する
foreach (XElement person in root.Elements("person"))
{
string name = person.Element("name")?.Value;
string age = person.Element("age")?.Value;
// 名前と年齢を出力
Console.WriteLine($"名前: {name}, 年齢: {age}");
}
}
}
ML データを解析した後、次はそのデータを Excel ワークシートにマッピングします。Spire.XLS for .NET を使用して、新しいワークブックを作成し、特定のセルにデータを入力し、さまざまなスタイルや書式設定を適用できます。これには、列の幅を自動調整、テキストの配置調整、ヘッダーを太字にすることが含まれます。
C# で XML を Excel に変換する手順は以下の通りです:
- System.Xml.Linq ライブラリを使用して XML ファイルからデータを抽出します。
- Workbook オブジェクトを作成します。
- Workbook.Worksheets.Add() メソッドを使用してワークシートを追加します。
- Worksheet.SetValue() メソッドを使用して、抽出したデータをワークシートのセルに書き込みます。
- ワークシートの外観を向上させるためにスタイルと書式設定を適用します。
- Workbook.SaveToFile() メソッドを使用して、Excel ファイルとしてワークブックを保存します。
以下のコードは、XML データを読み取り、それを Excel ファイルにインポートする効率的で高度な方法を示しています。
- C#
using Spire.Xls;
using System.Xml.Linq;
namespace ConvertXmlToExcel
{
class Program
{
static void Main(string[] args)
{
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// デフォルトのワークシートを削除
workbook.Worksheets.Clear();
// ワークシートを追加し、名前を付ける
Worksheet worksheet = workbook.Worksheets.Add("Books");
// XMLファイルを読み込む
XDocument xmlDoc = XDocument.Load("Sample.xml");
XElement xmlRoot = xmlDoc.Root;
// 最初の"book"要素を取得
XElement firstBook = xmlRoot.Element("book");
// ヘッダー情報を抽出してリストに変換
var headers = firstBook.Elements().ToList();
// ヘッダーをExcelに書き込む
for (int colIndex = 0; colIndex < headers.Count; colIndex++)
{
string headerText = headers[colIndex].Name.LocalName;
worksheet.SetValue(1, colIndex + 1, headerText);
}
// 他のデータをExcelに書き込む
int rowIndex = 2;
foreach (XElement book in xmlRoot.Elements("book"))
{
var dataNodes = book.Elements().ToList();
for (int colIndex = 0; colIndex < dataNodes.Count; colIndex++)
{
string value = dataNodes[colIndex].Value;
worksheet.SetValue(rowIndex, colIndex + 1, value);
}
rowIndex++;
}
// 列の幅を自動調整
worksheet.AllocatedRange.AutoFitColumns();
// 配置を設定
worksheet.AllocatedRange.HorizontalAlignment = HorizontalAlignType.Left;
// フォントスタイルを設定
worksheet.Range["A1:F1"].Style.Font.IsBold = true;
// Excelファイルとして保存
workbook.SaveToFile("output/XMLToExcel.xlsx");
// リソースを解放
workbook.Dispose();
}
}
}
C# で XML を PDF に変換する
前の例では、XML ファイルからデータを Excel ワークシートにインポートする方法を示しました。このワークシートは、その後、Worksheet.SaveToPdf() メソッドを使用して PDF ファイルに変換できます。PDF を構造的に整えるために、ページレイアウト設定(マージンやグリッド線の保持など)を調整することが必要です。
XML を PDF に変換する手順は以下の通りです:
- System.Xml.Linq ライブラリを使用して XML ファイルからデータを取得します。
- Workbook オブジェクトを作成します。
- Workbook.Worksheets.Add() メソッドでワークシートを追加します。
- Worksheet.SetValue() メソッドを使って XML ファイルから抽出したデータをワークシートのセルに入力します。
- スタイルや書式設定を適用してワークシートの外観を改善します。
- PageSetup オブジェクトを使用してページ設定を構成します。
- Worksheet.SaveToPdf() メソッドを使用してワークシートをPDFとして保存します。
以下のコードスニペットは、XML データをワークシートにインポートし、その後、そのワークシートを PDF ファイルとして保存する方法を示しています。
- C#
using Spire.Xls;
using Spire.Xls.Core;
using System.Xml.Linq;
namespace ConvertXmlToPdf
{
class Program
{
static void Main(string[] args)
{
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// デフォルトのワークシートを削除
workbook.Worksheets.Clear();
// ワークシートを追加し、名前を付ける
Worksheet worksheet = workbook.Worksheets.Add("Books");
// XMLファイルを読み込む
XDocument xmlDoc = XDocument.Load("Sample.xml");
XElement xmlRoot = xmlDoc.Root;
// 最初の"book"要素を取得
XElement firstBook = xmlRoot.Element("book");
// ヘッダー情報を抽出してリストに変換
var headers = firstBook.Elements().ToList();
// ヘッダーをExcelに書き込む
for (int colIndex = 0; colIndex < headers.Count; colIndex++)
{
string headerText = headers[colIndex].Name.LocalName;
worksheet.SetValue(1, colIndex + 1, headerText);
}
// 他のデータをExcelに書き込む
int rowIndex = 2;
foreach (XElement book in xmlRoot.Elements("book"))
{
var dataNodes = book.Elements().ToList();
for (int colIndex = 0; colIndex < dataNodes.Count; colIndex++)
{
string value = dataNodes[colIndex].Value;
worksheet.SetValue(rowIndex, colIndex + 1, value);
}
rowIndex++;
}
// 列の幅を自動調整
worksheet.AllocatedRange.AutoFitColumns();
// 配置を設定
worksheet.AllocatedRange.HorizontalAlignment = HorizontalAlignType.Left;
// フォントスタイルを設定
worksheet.Range["A1:F1"].Style.Font.IsBold = true;
// ページ設定を行う
workbook.ConverterSetting.SheetFitToPage = true;
PageSetup pageSetup = worksheet.PageSetup;
pageSetup.TopMargin = 0.3;
pageSetup.BottomMargin = 0.3;
pageSetup.LeftMargin = 0.3;
pageSetup.RightMargin = 0.3;
// グリッド線を保持
pageSetup.IsPrintGridlines = true;
// PDFとして保存
worksheet.SaveToPdf("output/XMLToPDF.pdf");
// リソースを解放
workbook.Dispose();
}
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。