Tableau croisé dynamique

Headless pris en charge

Les tableaux croisés dynamiques sont de puissants outils d’analyse qui permettent de synthétiser, d’analyser et de visualiser rapidement de grands volumes de données. Ils proposent différentes opérations et options de mise en forme pour faciliter la compréhension des données.

Introduction

Les tableaux croisés dynamiques sont généralement utilisés pour :

  • Synthétiser les données : ils permettent d’obtenir rapidement une vue d’ensemble des données.
  • Analyser les données : ils aident à repérer des tendances et des relations.
  • Explorer les données : ils facilitent la découverte de règles et de tendances.
  • Visualiser les données : ils permettent de mieux les comprendre grâce à leur représentation visuelle.

Un tableau croisé dynamique comprend généralement les éléments suivants :

  • Étiquettes de lignes : elles servent à regrouper les données.
  • Étiquettes de colonnes : elles servent également à regrouper les données.
  • Valeurs : elles servent à synthétiser les données.

Vous pouvez ajuster les étiquettes de lignes, les étiquettes de colonnes et les valeurs selon vos besoins afin de mieux analyser les données.

Source de données

Dans Univer Sheets, la source de données d’un tableau croisé dynamique peut être une feuille de calcul ou une plage de données. Choisissez la source la mieux adaptée à votre analyse. La première ligne de la source de données est utilisée par défaut comme étiquettes de colonnes ; les lignes restantes constituent les données. La source doit donc être aussi structurée que possible et comporter le moins possible de lignes ou de colonnes vides. Pour chaque colonne, Univer détecte automatiquement le type de données afin d’assurer le bon fonctionnement du tableau croisé dynamique. Si une colonne contient des types de données différents, son type est défini par défaut sur chaîne de caractères.

Dans Univer Sheets, les tableaux croisés dynamiques réagissent automatiquement aux modifications des données. Dès que la source change, le tableau croisé dynamique est actualisé.

Filtrage

Les tableaux croisés dynamiques permettent de filtrer les étiquettes de lignes et de colonnes. Ils proposent aussi un champ de filtre qui ne participe pas à la classification principale ni à la disposition des données synthétisées, mais qui permet néanmoins de filtrer les données.

Deux méthodes de filtrage sont disponibles :

  • Filtrage par étiquette : il s’applique directement aux éléments de la dimension d’étiquette active. Dans une dimension « province », par exemple, vous pouvez exclure certaines provinces.
  • Filtrage par valeur : il nécessite d’indiquer une dimension de valeur, puis filtre les résultats synthétisés du champ de valeur. Vous pouvez, par exemple, exclure les données dont le chiffre d’affaires est inférieur à 1 000.

Tri

Le tri d’un tableau croisé dynamique ne s’applique qu’aux champs de lignes et de colonnes. Il peut être croissant ou décroissant et repose sur la méthode localCompare. D’autres méthodes de tri, comme le tri pinyin, seront prises en charge ultérieurement.

Deux méthodes de tri sont disponibles :

  • Tri par étiquette : il s’applique directement aux éléments de la dimension d’étiquette active. Dans une dimension « province », par exemple, vous pouvez trier les provinces par nom.
  • Tri par valeur : il nécessite d’indiquer une dimension de valeur, puis trie les résultats synthétisés du champ de valeur. Vous pouvez, par exemple, effectuer un tri selon le chiffre d’affaires.

Agrégation

Les tableaux croisés dynamiques prennent en charge les 11 méthodes d’agrégation proposées par Excel : somme, nombre, nombre de données, moyenne, maximum, minimum, produit, écart type, variance, écart type de la population et variance de la population.

Ils prennent en charge plusieurs dimensions de valeur et permettent de personnaliser la zone de la dimension de valeur (position de la valeur) ainsi que sa position (indice de la valeur).

Cette logique de disposition étant complexe, seule la vue en tableau est actuellement disponible. D’autres vues seront ajoutées ultérieurement en fonction des besoins.

Exploration détaillée

L’exploration détaillée permet de double-cliquer sur une cellule de la zone de valeurs d’un tableau croisé dynamique pour afficher les données détaillées correspondantes. Il devient ainsi plus facile de remonter jusqu’aux données d’origine.

Regroupement

Univer Sheets prend en charge les regroupements par date, numériques et manuels.

  • Regroupement par date : utilisez setDateGroupType pour les champs de date dérivés. Pour regrouper un champ de libellé de date d’origine par unités calendaires, définissez univerAPI.Enum.PivotDateGroupingMode.ExcelLike avec setDateGroupingMode, puis appelez setExcelDateGroup.
  • Regroupement numérique : transmettez l’ID du champ de libellé et les paramètres des intervalles à setNumberGroup.
  • Regroupement manuel : transmettez l’ID du champ source d’origine et des groupes de membres conservant leur type de valeur à setManualGroups. Chaque groupe doit contenir au moins deux membres ; un tableau vide supprime tous les groupes manuels du champ.

Utilisez les segments et chronologies pour filtrer les tableaux et rapports croisés de manière interactive.

Mode plugin

Installation

Shell
pnpm add @univerjs-pro/sheets-pivot @univerjs-pro/sheets-pivot-ui

Utilisation

TypeScript
import { UniverSheetsPivotTablePlugin } from '@univerjs-pro/sheets-pivot'import { UniverSheetsPivotTableUIPlugin } from '@univerjs-pro/sheets-pivot-ui'import SheetsPivotTableUIEnUS from '@univerjs-pro/sheets-pivot-ui/locale/en-US'import SheetsPivotTableEnUS from '@univerjs-pro/sheets-pivot/locale/en-US'import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import '@univerjs-pro/sheets-pivot-ui/lib/index.css'import '@univerjs-pro/sheets-pivot/facade'const univer = new Univer({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      SheetsPivotTableEnUS,       SheetsPivotTableUIEnUS,     ),  },})

Enregistrement des plugins

Le plugin de tableau croisé dynamique offre un enregistrement flexible adapté à différents cas d’usage. Deux modes répondent aux divers besoins de calcul.

Enregistrement dans le processus principal uniquement

Le plugin de tableau croisé dynamique peut être enregistré uniquement dans le processus principal. Ce mode convient aux tâches légères et aux opérations simples, et ne nécessite aucune configuration supplémentaire. Il suffit d’importer UniverSheetsPivotTablePlugin.

TypeScript
univer.registerPlugin(UniverSheetsPivotTablePlugin)univer.registerPlugin(UniverSheetsPivotTableUIPlugin)

Enregistrement dans le processus principal et le processus worker

Pour les scénarios qui exigent des performances élevées, le plugin peut être enregistré à la fois dans le processus principal et dans le processus worker. Il bénéficie alors d’une architecture multithread qui distribue efficacement les données et les calculs, ce qui réduit considérablement la charge du processus principal et améliore les performances globales.

Dans ce mode, le processus principal assure surtout la distribution des données, la synchronisation et le rendu, tandis que le processus worker se charge des calculs complexes. Sa mise en œuvre nécessite d’ajuster la configuration lors de l’enregistrement.

TypeScript
// main process file// Setting notExecuteFormula to true indicates that the main process does not perform calculations. It is only responsible for data distribution, synchronization, and rendering.univer.registerPlugin(UniverSheetsPivotTablePlugin, { notExecuteFormula: true })univer.registerPlugin(UniverSheetsPivotTableUIPlugin)// web worker process file// Setting notExecuteFormula to false indicates that the worker process performs the calculations.univer.registerPlugin(UniverSheetsPivotTablePlugin, { notExecuteFormula: false })

Si vous disposez d’une licence commerciale Univer, consultez la page Utiliser une licence dans le client pour la configurer.

Plugins et configuration

TypeScript
import type { DateSystem } from '@univerjs/core'interface IUniverSheetsPivotConfig {  /**   * Define the maximum number of items that can be displayed in a single pivot table field.   * @default 1000   */  maxLimitItemCount?: number  /**   * Regroupe automatiquement les champs de date ajoutés aux lignes ou aux colonnes.   * @default true   */  autoDateGroup?: boolean  /**   * Système de dates utilisé pour le regroupement.   * @default DateSystem.Date1900   */  dateSystem?: DateSystem}

Prise en charge mobile

Configurez d’abord l’éditeur mobile. Dans l’initialisation en mode plugin de cette page, remplacez les inscriptions de bureau ci-dessous par les exports mobiles des mêmes paquets avant d’ouvrir un document. Conservez modèles, styles, traductions et imports Facade ; n’enregistrez pas les deux variantes.

PaquetInscription de bureauInscription mobile
@univerjs-pro/sheets-pivot-uiUniverSheetsPivotTableUIPluginUniverSheetsPivotTableMobileUIPlugin

Mode prédéfini

La fonctionnalité de tableau croisé dynamique est incluse dans le preset @univerjs/preset-sheets-advanced, qui comprend également d’autres fonctionnalités avancées, comme le dessin et les filigranes.

Installation

Le preset UniverSheetsAdvancedPreset de @univerjs/preset-sheets-advanced dépend du preset UniverSheetsDrawingPreset lors de l’exécution. Installez d’abord @univerjs/preset-sheets-drawing.

Shell
pnpm add @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced

Utilisation

TypeScript
import { UniverSheetsAdvancedPreset } from '@univerjs/preset-sheets-advanced'import UniverPresetSheetsAdvancedEnUS from '@univerjs/preset-sheets-advanced/locales/en-US'import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'import { UniverSheetsDrawingPreset } from '@univerjs/preset-sheets-drawing'import UniverPresetSheetsDrawingEnUS from '@univerjs/preset-sheets-drawing/locales/en-US'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-sheets-core/lib/index.css'import '@univerjs/preset-sheets-drawing/lib/index.css'import '@univerjs/preset-sheets-advanced/lib/index.css'const { univerAPI } = createUniver({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      UniverPresetSheetsCoreEnUS,      UniverPresetSheetsDrawingEnUS,       UniverPresetSheetsAdvancedEnUS,     ),  },  presets: [    UniverSheetsCorePreset(),    UniverSheetsDrawingPreset(),     UniverSheetsAdvancedPreset(),   ],})

Si vous disposez d’une licence commerciale Univer, consultez la page Utiliser une licence dans le client pour la configurer.

Presets et configuration

TypeScript
interface IUniverSheetsAdvancedPresetConfig {  pivot?: Pick<IUniverSheetsPivotConfig, 'maxLimitItemCount'>}interface IUniverSheetsPivotConfig {  /**   * Define the maximum number of items that can be displayed in a single pivot table field.   * @default 1000   */  maxLimitItemCount?: number}

Facade API

Vous trouverez les définitions de types complètes de la Facade API dans la FacadeAPI.

Importation

Remarque sur le mode plugin

Seul le mode plugin nécessite d’importer manuellement le package Facade. Le mode prédéfini inclut déjà le package Facade correspondant ; aucune importation supplémentaire n’est nécessaire.

TypeScript
import '@univerjs-pro/sheets-pivot/facade'

Ajouter un tableau croisé dynamique

La méthode FWorkbook.addPivotTable permet d’ajouter un tableau croisé dynamique. En cas de réussite, elle renvoie l’instance FPivotTable.

TypeScript
// should ensure the sheet range A1:G9 is not emptyconst fWorkbook = univerAPI.getActiveWorkbook()const unitId = fWorkbook.getId()const fSheet = fWorkbook.getActiveSheet()const subUnitId = fSheet.getSheetId()const sheetName = fSheet.getSheetName()const sourceInfo = {  unitId,  subUnitId,  sheetName,  range: {    startRow: 0,    startColumn: 0,    endRow: 8,    endColumn: 6,  },}const anchorCellInfo = {  unitId,  subUnitId,  row: 20,  col: 8,}const fPivotTable = await fWorkbook.addPivotTable(sourceInfo, univerAPI.Enum.PositionTypeEnum.Existing, anchorCellInfo)const pivotTableId = fPivotTable.getPivotTableId()// add flag to avoid add pivot fields multiple timeslet hasAdded = false// the addPivotTable is async, you can add pivot fields after the pivot table is addeduniverAPI.addEvent(univerAPI.Event.PivotTableRendered, async (params) => {  if (!hasAdded && params.pivotTableId === pivotTableId) {    hasAdded = true    await fPivotTable.addField(1, univerAPI.Enum.PivotTableFiledAreaEnum.Row, 0)    await fPivotTable.addField(1, univerAPI.Enum.PivotTableFiledAreaEnum.Value, 0)  }})

Obtenir un tableau croisé dynamique

La méthode FWorkbook.getPivotTableByCell permet d’obtenir une instance de tableau croisé dynamique à partir de sa cellule d’ancrage. Elle renvoie l’instance FPivotTable si la cellule cible appartient à un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const unitId = fWorkbook.getId()const fSheet = fWorkbook.getActiveSheet()const subUnitId = fSheet.getSheetId()// get pivot table by the cell in FWorkbook.const fPivotTable = fWorkbook.getPivotTableByCell(unitId, subUnitId, 0, 8)// get pivot table by the cell in FWorksheet.const pivotTable2 = fSheet.getPivotTableByCell(0, 8)

L’instance FPivotTable fournit plusieurs méthodes permettant de manipuler le tableau croisé dynamique.

MéthodeDescription
removesupprime le tableau croisé dynamique de l’instance
getConfigrenvoie la configuration, la plage source et la cellule d’ancrage
addFieldajoute un champ au tableau croisé dynamique
removeFieldsupprime un champ du tableau croisé dynamique
updateFieldPositionmet à jour la position d’un champ
updateValuePositioncontrôle la position de ∑Valeur
setSubtotalTypedéfinit le type de sous-total du champ
setLabelSortdéfinit le tri par étiquette du champ
setLabelManualFilterdéfinit le filtre par étiquette du champ
renameFieldrenomme le champ
setValueFilterdéfinit le filtre par valeur
resetréinitialise les champs du tableau croisé dynamique
setFieldsConfigdéfinit la configuration des champs
getValueFiltersobtient tous les filtres par valeur

Écouteurs d’événements

Vous trouverez les définitions complètes des types d’événements dans la page Events.

L’événement univerAPI.Event.BeforePivotTableAdd est déclenché avant l’ajout d’un tableau croisé dynamique.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforePivotTableAdd, (params) => {  const { positionType, targetCellInfo } = params  if (positionType === univerAPI.Enum.PositionTypeEnum.Existing && targetCellInfo.sheetName === 'Sheet 1') {    // Cancel the pivot table adding operation    params.cancel = true    console.log(`The pivot table can't be added to the sheet ${targetCellInfo.sheetName}`)  }})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableAdded est déclenché après l’ajout d’un tableau croisé dynamique.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableAdded, (params) => {  const { positionType, targetCellInfo } = params  if (positionType === univerAPI.Enum.PositionTypeEnum.Existing) {    console.log('A pivot table created in an existing sheet')    console.log(`      The target sheet name is ${targetCellInfo.sheetName},      the target row is ${targetCellInfo.row}, the target column is ${targetCellInfo.column}    `)  } else {    console.log('A pivot table created in a new sheet')  }})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.BeforePivotTableMove est déclenché avant le déplacement d’un tableau croisé dynamique.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforePivotTableMove, (params) => {  const { pivotTableId, targetCellInfo } = params  if (pivotTableId === 'pivotTable1' && targetCellInfo.sheetName === 'Sheet 1') {    // Cancel the move pivot table operation    params.cancel = true    console.log(`The pivot table can't be moved to the sheet ${targetCellInfo.sheetName}`)  }})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableMoved est déclenché après le déplacement d’un tableau croisé dynamique.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableMoved, (params) => {  const { pivotTableId, targetCellInfo, originTargetInfo } = params  if (pivotTableId === 'pivotTable1') {    console.log(`      The pivot table moved from row: ${originTargetInfo.row} & column: ${originTargetInfo.column}      to the sheet ${targetCellInfo.sheetName} row: ${targetCellInfo.row} & column: ${targetCellInfo.column}    `)  }})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableRendered est déclenché après le rendu d’un tableau croisé dynamique.

TypeScript
// import { unionPivotViewRange } from '@univerjs-pro/sheets-pivot';const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableRendered, (params) => {  const { pivotTableId, rangeInfo } = params  console.log(`The pivot table ${pivotTableId} has been rendered`)  if (rangeInfo) {    console.log(unionPivotViewRange(rangeInfo))  }})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableRemoved est déclenché après la suppression d’un tableau croisé dynamique.

TypeScript
const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableRemoved, (params) => {  const { pivotTableId } = params  console.log(`The pivot table ${pivotTableId} has been removed`)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableFieldAdded est déclenché après l’ajout d’un champ à un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableFieldAdded, (params) => {  const { pivotTableId, fieldId, fieldArea, fieldIndex } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const fieldSetting = pivotTable.getFieldSetting(fieldId)  console.log(fieldSetting)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableFieldRemoved est déclenché après la suppression d’un champ d’un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableFieldRemoved, (params) => {  const { pivotTableId, fieldId } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const fieldSetting = pivotTable.getFieldSetting(fieldId)  console.log(fieldSetting)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableFieldMoved est déclenché après le déplacement d’un champ dans un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableFieldMoved, (params) => {  const { pivotTableId, fieldId, fieldArea, fieldIndex } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const fieldSetting = pivotTable.getFieldSetting(fieldId)  console.log(`The source name ${fieldSetting.sourceName} the display name ${fieldSetting.displayName}`)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableFieldCollapseChanged est déclenché après le développement ou la réduction d’une dimension dans un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableFieldCollapseChanged, (params) => {  const { pivotTableId, fieldId, isCollapsed } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const fieldSetting = pivotTable.getFieldSetting(fieldId)  console.log(`The source name ${fieldSetting.sourceName} the display name ${fieldSetting.displayName}`)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableFieldFilterChanged est déclenché après le filtrage d’une dimension dans un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableFieldFilterChanged, (params) => {  const { pivotTableId, fieldId, filter } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const fieldSetting = pivotTable.getFieldSetting(fieldId)  console.log(`The Checklist filter value is ${fieldSetting.filterInfo.checklist}`)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableFieldSortChanged est déclenché après le tri d’une dimension dans un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableFieldSortChanged, (params) => {  const { pivotTableId, fieldId, sort } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const fieldSetting = pivotTable.getFieldSetting(fieldId)  console.log(`The sort info is ${fieldSetting.sortInfo}`)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableFieldSettingChanged est déclenché après la modification du paramètre d’une dimension dans un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableFieldSettingChanged, (params) => {  const { pivotTableId, fieldId, setting } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const fieldSetting = pivotTable.getFieldSetting(fieldId)  console.log(`The source name ${fieldSetting.sourceName} the display name ${fieldSetting.displayName}`)})// Remove the event listener, use `disposable.dispose()`

L’événement univerAPI.Event.PivotTableValuePositionChanged est déclenché après la modification de la position d’une valeur dans un tableau croisé dynamique.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const disposable = univerAPI.addEvent(univerAPI.Event.PivotTableValuePositionChanged, (params) => {  const { pivotTableId, valueId, position } = params  const pivotTable = fWorkbook.getPivotTableById(pivotTableId)  const valueSetting = pivotTable.getValueSetting(valueId)  console.log(`The source name ${valueSetting.sourceName} the display name ${valueSetting.displayName}`)})// Remove the event listener, use `disposable.dispose()`

Afficher les valeurs sous forme de

Utilisez setShowDataAs() sur un champ de valeurs pour afficher sa part du total d’une ligne, d’une colonne ou du total général, ou un écart par rapport à un élément de base. Le calcul affiché change sans remplacer les données sources. getShowDataAs() lit le réglage et resetShowDataAs() rétablit le calcul normal.

TypeScript
const valueId = fPivotTable.getFieldIdsByArea(  univerAPI.Enum.PivotTableFiledAreaEnum.Value,)[0]if (valueId) {  await fPivotTable.setShowDataAs(valueId, {    type: univerAPI.Enum.PivotShowAsTypeEnum.percentOfGrandTotal,  })  console.log(fPivotTable.getShowDataAs(valueId))}

fPivotTable désigne un tableau croisé existant. Utilisez l’ID d’un champ de valeurs, pas celui d’une colonne source ou d’un champ de lignes. Les modes d’écart et de cumul nécessitent aussi les paramètres du champ et de l’élément de base.

Copier les tableaux croisés dynamiques avec une feuille

Lorsque le plugin de tableaux croisés dynamiques est enregistré, la duplication d’une feuille copie aussi ses tableaux croisés dynamiques et leur configuration de champs. Chaque copie reçoit un nouvel identifiant. Si la source se trouve sur la feuille copiée, la référence pointe vers la nouvelle feuille ; une source située sur une autre feuille ou un autre classeur conserve sa référence. Les copies participent à l’annulation et au rétablissement de la duplication de la feuille.

TypeScript
const workbook = univerAPI.getActiveWorkbook()if (!workbook) throw new Error('No active workbook')const copiedSheet = workbook.duplicateActiveSheet()console.log(copiedSheet.getSheetName())

Filtres multiples et conditions de date

setOptions({ allowMultipleFilters: true }) permet de combiner une sélection de membres, une condition d’étiquette/date et un filtre de valeurs sur un champ. Omettre l’option ou choisir false remplace les catégories entre elles ; la désactiver en présence de catégories incompatibles efface les filtres du rapport. Un champ accepte toujours au plus un filtre de valeurs.

setDateFilter() accepte des conditions fixes telles que dateEqual, dateOlderThan et dateBetween. expected utilise les numéros de série Excel du système de dates du classeur ; un intervalle prend deux valeurs. useWholeDay: true ignore l’heure ; omis ou false, il compare les valeurs exactes. Utilisez l’ID du champ du rapport, pas l’index de la colonne source. L’exemple reprend fPivotTable et nécessite une colonne source Date.

getDateFilter() renvoie une copie indépendante ; clearDateFilter() efface uniquement la condition de date. Ces opérations prennent en charge l’annulation et la collaboration. Vérifiez le résultat booléen : un segment actif peut empêcher l’application d’une condition incompatible.

TypeScript
if (!fPivotTable) throw new Error('PivotTable not found')await fPivotTable.setOptions({ allowMultipleFilters: true })const dateField = Object.values(fPivotTable.getConfig()?.fieldsConfig.dimension ?? {})  .find((field) => field.sourceName === 'Date')if (!dateField) throw new Error('Add the Date field to the report first')await fPivotTable.setDateFilter(dateField.id, {  operator: univerAPI.Enum.ST_PivotFilterOperatorEnum.dateEqual,  expected: 45293,  useWholeDay: true,})console.log(fPivotTable.getDateFilter(dateField.id))await fPivotTable.clearDateFilter(dateField.id)

GETPIVOTDATA

Utilisez =GETPIVOTDATA("Sales",$I$1,"Region","East") pour lire un agrégat du rapport visible dont le coin supérieur gauche est I1. Le champ de valeurs accepte son libellé affiché ou son nom source. L’ancre doit référencer une seule cellule et les arguments champ/élément doivent former des paires complètes.

L’implémentation actuelle parcourt au plus 200 lignes vers le bas et 50 colonnes vers la droite depuis l’ancre, sans interroger les enregistrements source masqués. Un champ, élément ou résultat introuvable renvoie #REF!. Un nombre d’arguments incorrect ou une ancre ne référençant pas une seule cellule renvoie #VALUE!.

Que pensez-vous de ce guide ?

© 2026 DreamNum Co., Ltd.