Связывание рабочих таблиц с их именами с использованием OpenXML SDK 1.0 - PullRequest
2 голосов
/ 14 июня 2010

Я использую версию 1.0 OpenXML SDK от Microsoft для базового анализа файлов .xlsx. Я могу получить и проанализировать рабочие листы, а также получить список имен рабочих листов, но я не могу понять, как связать, какое имя идет с каким рабочим листом.

Я понимаю, что такой элемент, как <sheet name="My Sheet" sheetId="1" r:id="rId1"/> в рабочей книге, связан с конкретным рабочим листом через отношения, определенные в xl/_rels.xml, но я не вижу, где какая-либо информация об отношениях представлена ​​в API. 1005 *

Я использую C #, но любые примеры VB.NET были бы такими же полезными.

Я чувствую, что это должно быть очень просто, но я не могу понять это. Похоже, что это может быть проще в версии 2.0 SDK, но в настоящее время обновление не вариант.

Ответы [ 2 ]

2 голосов
/ 15 июня 2010

Аааа ... да, все оказалось просто. Класс WorkbookPart предоставляет свойство WorksheetParts, от которого я завис, но он также предоставляет метод GetPartById(relationshipId).

Учитывая список <sheet/> элементов из XML рабочей книги - каждый из которых содержит как имя, так и идентификатор отношения - мне просто нужно было извлечь каждый WorksheetPart по идентификатору.

1 голос
/ 02 июля 2012
// Iterate Sheets; Get Name and xref WorksheetPart (container for Worksheet)
foreach (Sheet sheet in doc.WorkbookPart.Workbook.Sheets)
{
    string sName = sheet.Name;
    string sID = sheet.Id;

    WorksheetPart part = (WorksheetPart)doc.WorkbookPart.GetPartById(sID);
    Worksheet actualSheet = part.Worksheet;
}
...