[方法] Open XML API を使用して Office Open XML パッケージからワークシート情報を取得する
Office Open XML パッケージの仕様は、単一のパッケージに格納されているすべてのパーツのリレーションシップを定義し、コンテンツを含む XML ファイルのセットを定義しています。これらのパッケージは、Microsoft® Office Excel® 2007、Microsoft Office PowerPoint® 2007、および Microsoft Office Word 2007 のドキュメント ファイルを構成するパーツを結合します。Open XML アプリケーション プログラミング インターフェイス (API) を使用して、パッケージを作成したり、パッケージを構成するファイルを操作したりできます。このトピックでは、Excel 2007 で Office Open XML パッケージのワークシートから情報を取得するためのコードと手順について説明していますが、手順は Office Open XML 形式をサポートする 3 つのどの 2007 Microsoft Office system プログラムでも同じです。
注意
このトピックのコード サンプルは、Microsoft Visual Basic® .NET および Microsoft Visual C#® で記述されており、Microsoft Visual Studio® 2008 で作成されたアドインで使用できます。Visual Studio 2008 でアドインを作成する方法の詳細については、「Open XML 形式 SDK 1.0 を使用して作業を開始する」を参照してください。
Office Open XML パッケージからワークシート情報を取得する
以下のコードでは、SpreadsheetDocument ドキュメント パッケージに含まれる指定されたブックにあるすべてのシートの名前と種類を含むリストを取得します。
' How to get worksheet information.
Public Function XLGetSheetInfo(ByVal fileName As String) As List(Of String)
' Fill this collection with a list of all the sheets.
Dim sheets As List(Of String) = New List(Of String)
Dim xlPackage As SpreadsheetDocument = SpreadsheetDocument.Open(fileName, false)
Dim workbook As WorkbookPart = xlPackage.WorkbookPart
Dim workbookstr As Stream = workbook.GetStream
Dim doc As XmlDocument = New XmlDocument
doc.Load(workbookstr)
Dim nsManager As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsManager.AddNamespace("default", doc.DocumentElement.NamespaceURI)
Dim nodelist As XmlNodeList = doc.SelectNodes("//default:sheets/default:sheet", nsManager)
For Each node As XmlNode In nodelist
Dim sheetName As String = string.Empty
sheetName = node.Attributes("name").Value
sheets.Add(sheetName)
Next
Return sheets
End Function
// How to get worksheet information.
public List<string> XLGetSheetInfo(string fileName)
{
// Fill this collection with a list of all the sheets.
List<string> sheets = new List<string>();
using (SpreadsheetDocument xlPackage = SpreadsheetDocument.Open(fileName, false))
{
WorkbookPart workbook = xlPackage.WorkbookPart;
Stream workbookstr = workbook.GetStream();
XmlDocument doc = new XmlDocument();
doc.Load(workbookstr);
XmlNamespaceManager nsManager = new XmlNamespaceManager(doc.NameTable);
nsManager.AddNamespace("default", doc.DocumentElement.NamespaceURI);
XmlNodeList nodelist = doc.SelectNodes("//default:sheets/default:sheet", nsManager);
foreach (XmlNode node in nodelist)
{
string sheetName = string.Empty;
sheetName = node.Attributes["name"].Value;
sheets.Add(sheetName);
}
}
return sheets;
}
SpreadsheetDocument ドキュメント パッケージに含まれる指定されたブックにあるすべてのシートの名前と種類を含むリストを取得するには
最初に、ソース Excel 2007 ファイルのパスと名前を表すパラメータを渡します。
次に、ワークシート情報を格納する sheets という名前の List オブジェクトを作成します。
次に、SpreadsheetDocument パッケージの WorkbookPart パーツを、doc という名前の新しい XmlDocument ドキュメントに読み込みます。
次に、XPath 式および XmlNodeList オブジェクトを使用して、XmlDocument ドキュメントのすべての
//default:sheets/default:sheet
ノードを取得します。次に、XmlNodeList オブジェクトの繰り返し処理を行い、シートの名前をシートのリストに追加します。
最後に、SpreadsheetDocument パッケージに格納されているすべてのワークシートの名前を含むシートのリストを返します。