How to retrieve Open XML Relationships?
I'm using the Open XML SDK 2.0 to open an Excel file.
When I open the .rels file (from the .xlsx/.zip) I can see all the relati开发者_StackOverflow中文版onships defined.
How can I get a list of these relationships in code?
SpreadsheetDocument.Parts and WorkbookPart.Parts
It depends on which relationships you want. As others have mentioned use .Parts
to fetch relationship information on any OpenXmlPart
.
You could do it like this:
public void GetRelationships(string filepath)
{
using (SpreadsheetDocument spreadsheet = SpreadsheetDocument.Open(filepath, false))
{
// Get relationships at spreadsheet level
IEnumerable relationships = spreadsheet.Parts;
foreach (IdPartPair partPair in relationships)
{
Console.WriteLine(partPair.RelationshipId);
Console.WriteLine(partPair.OpenXmlPart);
}
// Get relationships at workbook level
IEnumerable relationships2 = spreadsheet.WorkbookPart.Parts;
foreach (IdPartPair partPair in relationships2)
{
Console.WriteLine(partPair.RelationshipId);
Console.WriteLine(partPair.OpenXmlPart);
}
// relationships at worksheet level
IEnumerable worksheetParts = spreadsheet.WorkbookPart.WorksheetParts;
foreach (WorksheetPart worksheetPart in worksheetParts)
{
IEnumerable relationships3 = worksheetPart.Parts;
foreach (IdPartPair partPair in relationships3)
{
Console.WriteLine(partPair.RelationshipId);
Console.WriteLine(partPair.OpenXmlPart);
}
}
// Perform same concepts on any other OpenXmlPart in the package
}
}
精彩评论