Pregunta

Estoy usando la versión 1.0 del SDK de OpenXML de Microsoft para hacer un poco de análisis básico de archivos .xlsx. Puedo conseguir y analizar las hojas de trabajo, y puedo conseguir una lista de los nombres de las hojas, pero no puedo por la vida de a averiguar cómo vincular hasta qué nombre va con qué hoja de trabajo.

Yo entiendo que un elemento como <sheet name="My Sheet" sheetId="1" r:id="rId1"/> en el libro está vinculado a una hoja de cálculo específica a través de las relaciones definidas en xl/_rels.xml, pero no puedo ver donde cualquiera de la información de la relación se expone en el API.

Estoy usando C #, VB.NET, pero ningún ejemplo sería igual de útiles.

Me siento como este debe ser simple muerto, pero no puedo entenderlo. También parece que puede ser más directo en la versión 2.0 del SDK, pero la mejora no es una opción en este momento.

¿Fue útil?

Solución

Argh ... sí, que terminó siendo absolutamente simple. La clase WorkbookPart expone una propiedad WorksheetParts que estaba colgado sobre el uso, sino que también expone un método GetPartById(relationshipId).

Dada una lista de elementos <sheet/> desde el XML libro - cada uno de los cuales contiene un nombre y un identificador de relación -. Sólo tenía que recuperar cada WorksheetPart por id

Otros consejos

// 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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top