Share via


Trabajar con tablas SpreadsheetML

En este tema se describe la clase Table del SDK de Open XML y cómo se relaciona con el esquema SpreadsheetML de formato de archivo Open XML. Para obtener más información sobre la estructura general de las partes y elementos que forman un documento SpreadsheetML, vea Estructura de un documento SpreadsheetML (SDK de Open XML).

Tablas de SpreadsheetML

La siguiente información de la especificación ISO/IEC 29500 presenta el elemento table (<table>).

Una tabla ayuda a organizar y proporcionar la estructura de las listas de información de una hoja de cálculo. Las tablas tienen regiones de columnas, filas y datos claramente etiquetadas. Las tablas permiten que los usuarios ordenen, analicen, den formato, administren, agreguen y eliminen información fácilmente.

Si una región de datos se designa como una tabla, se pueden aplicar comportamientos especiales, para ayudar al usuario a realizar acciones útiles. [Ejemplo: si el usuario escribe datos adicionales en la fila adyacente a la parte inferior de la tabla, la tabla puede expandirse y agregar automáticamente esos datos a su región de datos. De forma similar, agregar una columna es tan fácil como escribir un nuevo encabezado de columna a la derecha o izquierda de los encabezados de columna actuales. Las capacidades de filtrado y ordenación se pueden exponer automáticamente al usuario a través de las flechas desplegables. Se pueden crear columnas calculadas especiales, que resumen o calculan datos de la tabla. Estas columnas tienen la capacidad de expandirse y reducirse de acuerdo con el tamaño de la tabla, así como mantener referencias a fórmulas adecuadas. Fin del ejemplo]

Se pueden crear tablas a partir de datos que ya están presentes en la hoja de cálculo, desde una consulta de datos externos o desde la asignación de una colección de elementos XML de repetición a un rango de hoja de cálculo.

El XML de la hoja almacena los datos numéricos y de texto. El XML de la tabla registra los distintos atributos del objeto de tabla específico.

Una tabla de SpreadsheetML es una construcción lógica que especifica que un rango de datos pertenece a un único conjunto de datos. SpreadsheetML ya usa un modelo similar a una tabla para especificar valores en filas y columnas, pero también se puede etiquetar un subconjunto de la hoja como una table y asignarle determinadas propiedades que son útiles para el análisis. Una tabla de SpreadsheetML permite analizar datos de formas nuevas; por ejemplo, mediante el filtrado, formato y enlace de datos.

Al igual que otras construcciones de SpreadsheetML, una tabla de una hoja de cálculo se almacena en una parte independiente dentro del paquete. La parte de tabla no contiene ningún dato de tabla. Los datos se mantienen en las celdas de hoja de cálculo. Para obtener más información sobre los datos se almacena en la hoja de cálculo, vea Trabajar con hojas.

En la tabla siguiente se enumeran las clases comunes del SDK de Open XML que se usan al trabajar con la clase Table .

Elemento de SpreadsheetML Open XML SDK (clase)
tableColumn TableColumn
Autofiltro AutoFilter

Clase de tabla del SDK de Open XML

La claseTable del SDK de Open XML representa el elemento table (<table>) definido en el esquema de formato de archivo Open XML para documentos SpreadsheetML. Use la clase Table para manipular elementos de tabla> individuales < en un documento SpreadsheetML.

La siguiente información de la especificación ISO/IEC 29500 presenta el elemento table (<table>).

Una instancia de este tipo de parte contiene una descripción de una única tabla y su información de filtro automático. (Los datos de la tabla se almacenan en la parte de hoja de cálculo correspondiente).

El elemento raíz de una parte de este tipo de contenido será la tabla.

La parte de tabla contiene la definición de una única tabla. Cuando hay varias tablas en una hoja de cálculo, hay varias partes de tabla. El elemento raíz de esta parte es la tabla. Como mínimo, la tabla necesita información acerca de las columnas que componen la tabla. Sin embargo, para habilitar el filtrado automático debe definir al menos un filtro automático, que puede estar vacío. Si no define ningún filtro automático, se deshabilitará el filtrado automático cuando se abra el documento en Excel.

El elemento table tiene varios atributos que se usan para identificar la tabla y el rango de datos que abarca. Los atributos id y name deben ser únicos en todas las partes de tabla. El atributo displayName debe ser único en todas las partes de tabla y en todos los nombres definidos en el libro. El modelo de objetos usa el atributo name en Excel. Las referencias usan el atributo displayName en las fórmulas. El atributo ref se usa para identificar el rango de celdas que abarca la tabla. Esto no solo incluye los datos de tabla, sino también el encabezado de tabla que contiene los nombres de columna. Para obtener más información sobre los atributos de tabla, vea la especificación ISO/IEC 29500.

Clase TableColumn

Para agregar columnas a la tabla, debe agregar nuevos elementos tableColumn a la colección tableColumns. La colección tiene un atributo count que realiza el seguimiento del número de columnas.

La siguiente información de la especificación ISO/IEC 29500 presenta el elemento TableColumn (<tableColumn>).

Un elemento que representa una única columna de esta tabla.

Clase AutoFilter

La siguiente información de la especificación ISO/IEC 29500 presenta el elemento Autofiltro (<autofiltro>).

El filtro automático oculta temporalmente las filas según criterios de filtro, que se aplican columna por columna a una tabla de datos de la hoja de cálculo. Esta colección expresa los valores del filtro automático.

Ejemplo: en este ejemplo se expresa un filtro que indica que "mostrar solo valores mayores que 0,5". El filtro se aplica al rango B3:E8 y los criterios se aplican a los valores de la columna con colId='1' (numeración de columna de base cero, de izquierda a derecha). Por lo tanto, si el valor de esa columna en particular es menor o igual a 0,5, se deben ocultar todas las filas.

<autoFilter ref="B3:E8">
    <filterColumn colId="1">
        <customFilters>
            <customFilter operator="greaterThan" val="0.5"/>
        </customFilters>
    </filterColumn>
</autoFilter>

Ejemplo de SpreadsheetML

En este ejemplo se muestra el XML de un archivo que contiene una tabla en la Hoja1. La tabla contiene tres columnas y tres filas, además de un encabezado de columna.

El siguiente XML define la hoja de cálculo y se incluye en el archivo "sheet1.xml". El archivo XML de hoja de cálculo contiene los datos reales que se muestran en la tabla y contiene el elemento tablePart que hace referencia al archivo "table1.xml", que contiene la definición de tabla.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="https://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
        <dimension ref="A1:C4"/>
        <sheetViews>
            <sheetView tabSelected="1" workbookViewId="0">
                <selection sqref="A1:C4"/>
            </sheetView>
        </sheetViews>
        <sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
        <cols>
            <col min="1" max="3" width="11" customWidth="1"/>
        </cols>
        <sheetData>
            <row r="1" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A1" t="s">
                    <v>0</v>
                </c>
                <c r="B1" t="s">
                    <v>1</v>
                </c>
                <c r="C1" t="s">
                    <v>2</v>
                </c>
            </row>
            <row r="2" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A2">
                    <v>1</v>
                </c>
                <c r="B2">
                    <v>2</v>
                </c>
                <c r="C2">
                    <v>3</v>
                </c>
            </row>
            <row r="3" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A3">
                    <v>4</v>
                </c>
                <c r="B3">
                    <v>5</v>
                </c>
                <c r="C3">
                    <v>6</v>
                </c>
            </row>
            <row r="4" spans="1:3" x14ac:dyDescent="0.25">
                <c r="A4">
                    <v>7</v>
                </c>
                <c r="B4">
                    <v>8</v>
                </c>
                <c r="C4">
                    <v>9</v>
                </c>
            </row>
        </sheetData>
        <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
        <tableParts count="1">
            <tablePart r:id="rId1"/>
        </tableParts>
    </worksheet>

El siguiente código XML define la tabla y se encuentra en el archivo "table1.xml". El archivo XML de tabla define el rango de la tabla y el aspecto de la misma, así como sus filtros automáticos.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" id="1" name="Table1" displayName="Table1" ref="A1:C4" totalsRowShown="0">
        <autoFilter ref="A1:C4"/>
        <tableColumns count="3">
            <tableColumn id="1" name="Column1"/>
            <tableColumn id="2" name="Column2"/>
            <tableColumn id="3" name="Column3"/>
        </tableColumns>
        <tableStyleInfo name="TableStyleMedium2" showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>
    </table>