J'utilise la version 1.0 de Microsoft OpenXML SDK pour effectuer une analyse basique des fichiers .xlsx. Je peux obtenir et analyser les feuilles de calcul, et je peux obtenir une liste de noms de feuilles de calcul, mais je ne peux pas pour la vie de moi comprendre comment lier ce nom va avec quelle feuille de calcul. Je comprends qu'un élément tel que <sheet name="My Sheet" sheetId="1" r:id="rId1"/>
dans le classeur est lié à une feuille de calcul spécifique via les relations définies dans xl/_rels.xml
, mais je ne vois pas où l'une des informations de relation est exposée dans l'API. J'utilise C#, mais tous les exemples VB.NET seraient tout aussi utiles. Je me sens comme cela devrait être mortellement simple, mais je ne peux pas le comprendre. Il semble également que ce soit plus simple dans la version 2.0 du SDK, mais la mise à jour n'est pas une option pour le moment.Associer des feuilles de calcul avec leurs noms à l'aide d'OpenXML SDK 1.0
2
A
Répondre
2
Argh ... oui, ça a fini par devenir un jeu d'enfant. La classe WorkbookPart
expose une propriété WorksheetParts
que j'ai été accroché à l'aide, mais elle expose également une méthode GetPartById(relationshipId)
.
Étant donné une liste d'éléments <sheet/>
du classeur XML - dont chacun contient à la fois un nom et un identifiant de relation - j'ai juste besoin de récupérer chaque WorksheetPart par id.
1
// 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;
}