Share via


Trabajar con tablas dinámicas

En este tema se describe la clase PivotTableDefinition 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 los elementos y elementos que componen un documento SpreadsheetML, vea Estructura de un documento SpreadsheetML.

Tabla dinámica en SpreadsheetML

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

Las tablas dinámicas muestran vistas agregadas de datos fácilmente y con un diseño comprensible. Se pueden agregar cientos o miles de datos subyacentes en ejes de columnas y filas, para revelar el significado detrás de la información. Los informes de tabla dinámica se usan para organizar y resumir los datos de distintas maneras. La creación de un informe de tabla dinámica implica mover datos de un lado a otro para ver cómo se relacionan. Con unos pocos gestos, las filas y columnas dinámicas se pueden colocar en distintos diseños y disposiciones.

Un objeto de tabla dinámica tiene un área de ejes de filas, un área de ejes de columnas, un área de valores y un área de filtro de informe. Además, las tablas dinámicas tienen un panel Lista de campos correspondiente que muestra todos los campos de datos que se pueden colocar en una de las áreas de la tabla dinámica.

El libro apunta a (y posee la longevidad de) la parte pivotCacheDefinition, que a su vez apunta a y posee la parte pivotCacheRecords. El libro también señala y posee la parte de la hoja, que a su vez apunta a y posee una definición de parte de tabla dinámica, cuando una tabla dinámica está en la hoja (puede haber varias tablas dinámicas en una hoja). La parte de tabla dinámica apunta al elemento pivotCacheDefinition adecuado que está usando. Dado que varias tablas dinámicas pueden usar la misma caché, la parte de tabla dinámica no es propietaria de la longevidad de pivotCacheDefinition.

La parte de tabla dinámica describe los detalles del diseño de la tabla dinámica en la hoja. Indica los campos que están en las áreas de ejes de filas, ejes de columnas, filtro de informe y valores de la tabla dinámica. También señala información de formato sobre la tabla. Si se aplicó formato condicional a la misma, también se indica en la parte de tabla dinámica.

La definición de memoria caché dinámica contiene las definiciones de todos los campos de la tabla dinámica. Si se crea una tabla dinámica basada en una tabla normal, cada columna de la tabla se convierte en un campo de la definición de memoria caché dinámica. La memoria caché dinámica contiene las definiciones de campo y la información sobre el tipo de contenido que se encuentra en ese campo. También mantiene una referencia a los datos de origen en el marcado de la memoria caché, de modo que se pueda actualizar la memoria caché dinámica junto con los datos almacenados en caché en la parte de registros de memoria caché dinámica.

Los datos que se muestran en la tabla dinámica se almacenan en dos ubicaciones. La parte de registros de memoria caché dinámica mantiene los datos reales de la tabla dinámica. Las celdas de tabla de la hoja de cálculo también almacenan en caché una versión de los datos, pero esto es solo para fines de visualización. La parte de registros de memoria caché dinámica almacena datos de dos maneras. Los valores únicos para el área de datos de la tabla dinámica se almacenan en caché alineados. Se hace referencia a los elementos de repetición que se encuentran normalmente en la fila y columna. Estos datos compartidos se almacenan, en realidad, en la definición de memoria caché dinámica. Cada registro de la parte de registros de memoria caché dinámica se compone de N valores, donde N es igual al número de campos definidos en la definición de memoria caché dinámica.

El último paso es crear la tabla dinámica en sí. La parte de definición de tabla dinámica contiene la información sobre qué campo está presente en qué lugar de la tabla dinámica. Un campo se puede colocar en cuatro áreas: fila, columna, datos o filtro. Se seleccionan los campos entre aquellos almacenados en caché en la definición de memoria caché de tabla dinámica.

Para crear una tabla dinámica que esté lista para usarse cuando se abra el libro, también debe crear el marcado para las celdas de tabla. La tabla dinámica se muestra en las celdas de una hoja de cálculo y, por tanto, también debe construirlas. Además, puede hacer que el usuario actualice las celdas de la tabla dinámica al abrir el documento.

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

Elemento de SpreadsheetML Open XML SDK (clase)
pivotField PivotField
pivotCacheDefinition PivotCacheDefinition
pivotCacheRecords PivotCacheRecords

Clase PivotTableDefinition del SDK de Open XML

La clasePivotTableDefinition del SDK de Open XML representa el elemento de definición de tabla dinámica (<pivotTableDefinition>) definido en el esquema formato de archivo Open XML para documentos SpreadsheetML. Use la clase PivotTableDefinition para manipular elementos pivotTableDefinition> individuales < en un documento SpreadsheetML.

La función principal de la definición de tabla dinámica es almacenar información acerca de qué campo se muestra en qué eje de la tabla dinámica y en qué orden. Hay muchas otras opciones de configuración que se pueden agregar a la definición de tabla dinámica, pero a continuación se explican las básicas.

El elemento raíz asigna el nombre de la tabla dinámica para que se pueda usar como un origen de datos. Además, hace referencia a la memoria caché dinámica mediante el identificador que se agrega al elemento de libro y define la etiqueta de título que se va a mostrar encima del área de datos de la tabla dinámica. Todos estos elementos son obligatorios.

Las tres partes principales de pivotTableDefinition son: la ubicación de la tabla, la información para mostrar de los campos almacenados en caché y la información de posicionamiento de esos campos. Para obtener más información sobre estos y otros elementos adicionales que conforman pivotTableDefinition, vea la especificación ISO/IEC 29500.

Clase PivotField

El elemento PivotTableDefinition contiene los elementos PivotField (<pivotField>). La siguiente información de la especificación ISO/IEC 29500 presenta el elemento PivotField (<pivotField>).

Representa un único campo en la tabla dinámica. Este elemento contiene información sobre el campo, incluida la colección de elementos del campo.

En primer lugar, defina la colección de campos que aparece en la tabla dinámica mediante el elemento pivotFields. Cada campo actúa como una memoria caché para los datos de ese campo en el origen de datos. No es necesario definir la memoria caché. En su lugar, se puede establecer el elemento item igual que default y hacer que el usuario actualice la tabla cuando abra el documento. El atributo showAll se usa para ocultar algunos elementos de esa dimensión de datos. Después de definir los campos que forman parte de la tabla, estos se aplican a las cuatro áreas de la tabla dinámica.

Clase PivotCacheDefinition

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

La parte pivotCacheDefinition define cada campo de la parte pivotCacheRecords, incluido el nombre del campo y la información acerca de los datos que este contiene. La parte pivotCacheDefinition también define los elementos dinámicos que comparten las partes pivotTable y pivotRecords.

La memoria caché dinámica define el origen de los datos de la tabla dinámica, lo que permite su actualización, y define la lista de campos de esos datos. Tenga en cuenta que la memoria caché define todos los campos disponibles para la tabla dinámica, no los que realmente se usan. La definición de tabla dinámica define los campos disponibles que usa una tabla dinámica concreta.

La definición de origen de datos hace referencia a los datos que se muestran en la tabla dinámica. La tabla dinámica también mantiene los datos en la parte de registros de memoria caché para permitir que la tabla sea actualizable cuando la conexión de datos no esté disponible. No se puede depender de que las celdas de la tabla dinámica almacenen los datos, porque los datos de esas celdas son transitorios; es decir, cambian cuando se actualiza la tabla. Existen varios tipos de orígenes de datos; por ejemplo: hojas de cálculo, base de datos, cubo OLAP y otras tablas dinámicas.

The last part of the cache definition defines the fields of the data source using the cacheField element. The cacheField element is used for two purposes: it defines the data type and formatting of the field, and it is used as a cache for shared strings. The pivot values are stored in the pivot cache records part. When a recurring string is used as a value, the cache record uses a reference into the cacheField collection of shared items.

Clase PivotCacheRecords

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

La parte pivotCacheRecords contiene los datos subyacentes que se van a agregar. Es una memoria caché de los datos de origen.

La parte de registros de memoria caché puede almacenar cualquier cantidad de registros almacenados en caché. El número de valores definidos en cada campo es igual al número de campos existentes en la definición de la memoria caché. Cada registro se define con el elemento r. Este registro contiene elementos de valor como elementos secundarios. Se puede proporcionar ciertos valores con tipo, como numérico, booleano o fecha y hora, o se puede hacer referencia a los elementos compartidos.