Plan
La fonctionnalité de plan, également appelée regroupement ou plan de dimensions, permet de regrouper les lignes ou les colonnes d’une feuille de calcul. Elle facilite l’organisation et la synthèse de grands jeux de données grâce à des sections repliables.
Introduction
Dans Univer Sheets, la fonctionnalité de plan permet de :
- Regrouper des lignes ou des colonnes : créez des groupes hiérarchiques de lignes ou de colonnes pour organiser les données.
- Replier et déplier les groupes : affichez ou masquez les lignes ou colonnes regroupées en un seul clic.
- Imbriquer les groupes : créez plusieurs niveaux de groupes pour représenter des hiérarchies de données complexes.
Les groupes de plan sont couramment utilisés dans les cas suivants :
- Synthétiser des données détaillées : regroupez les lignes de détail sous des lignes de synthèse afin d’alléger l’affichage.
- Organiser de grands jeux de données : regroupez les colonnes ou lignes associées pour faciliter la navigation.
- Créer des rapports repliables : permettez aux utilisateurs de déplier ou de replier les sections d’un rapport selon leurs besoins.
Mode plugin
Installation
pnpm add @univerjs-pro/sheets-outline @univerjs-pro/sheets-outline-uinpm install @univerjs-pro/sheets-outline @univerjs-pro/sheets-outline-uiyarn add @univerjs-pro/sheets-outline @univerjs-pro/sheets-outline-uibun add @univerjs-pro/sheets-outline @univerjs-pro/sheets-outline-uiUtilisation
import { UniverSheetsOutlinePlugin } from '@univerjs-pro/sheets-outline'import { UniverSheetsOutlineUIPlugin } from '@univerjs-pro/sheets-outline-ui'import SheetsOutlineUIEnUS from '@univerjs-pro/sheets-outline-ui/locale/en-US'import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import '@univerjs-pro/sheets-outline/facade'import '@univerjs-pro/sheets-outline-ui/lib/index.css'const univer = new Univer({ locale: LocaleType.EN_US, locales: { [LocaleType.EN_US]: mergeLocales( SheetsOutlineUIEnUS, ), },})univer.registerPlugin(UniverSheetsOutlinePlugin)univer.registerPlugin(UniverSheetsOutlineUIPlugin)Si vous disposez d’une licence commerciale Univer, consultez la page Utiliser une licence côté client pour effectuer la configuration.
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.
| Paquet | Inscription de bureau | Inscription mobile |
|---|---|---|
@univerjs-pro/sheets-outline-ui | UniverSheetsOutlineUIPlugin | UniverSheetsOutlineMobileUIPlugin |
Mode prédéfini
La fonctionnalité de plan est incluse dans le preset @univerjs/preset-sheets-advanced.
Installation
pnpm add @univerjs/preset-sheets-advancednpm install @univerjs/preset-sheets-advancedyarn add @univerjs/preset-sheets-advancedbun add @univerjs/preset-sheets-advancedUtilisation
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 { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-sheets-core/lib/index.css'import '@univerjs/preset-sheets-advanced/lib/index.css'const { univerAPI } = createUniver({ locale: LocaleType.EN_US, locales: { [LocaleType.EN_US]: mergeLocales( UniverPresetSheetsCoreEnUS, UniverPresetSheetsAdvancedEnUS, ), }, presets: [ UniverSheetsCorePreset(), UniverSheetsAdvancedPreset(), ],})Si vous disposez d’une licence commerciale Univer, consultez la page Utiliser une licence côté client pour effectuer la configuration.
API Facade
La définition complète des types de l’API Facade est disponible dans la documentation de la FacadeAPI.
Importation
Remarque sur le mode plugin
L’importation manuelle du package Facade n’est nécessaire qu’en mode plugin. Le mode prédéfini inclut déjà le package Facade correspondant, aucune importation supplémentaire n’est donc requise.
import '@univerjs-pro/sheets-outline/facade'Création de plans de lignes
Vous pouvez créer un groupe de plan de lignes à l’aide de l’API Facade :
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Group rows 2 to 6 (0-based index: startRow=1, numRows=5)fWorksheet.addRowOutline(1, 5)Création de plans de colonnes
De la même manière, vous pouvez créer un groupe de plan de colonnes :
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Group columns B to E (0-based index: startColumn=1, numColumns=4)fWorksheet.addColumnOutline(1, 4)Repli et dépli des plans
Vous pouvez replier ou déplier un groupe de plan par programmation :
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const rowOutlines = fWorksheet.getDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW)if (rowOutlines.length > 0) { // Collapse the first row outline group fWorksheet.setDimensionOutlineCollapsed(rowOutlines[0].id, true) // Expand it later fWorksheet.setDimensionOutlineCollapsed(rowOutlines[0].id, false)}Suppression de plans
Vous pouvez supprimer un groupe de plan donné à partir de son identifiant :
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const rowOutlines = fWorksheet.getDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW)if (rowOutlines.length > 0) { fWorksheet.removeDimensionOutline(rowOutlines[0].id)}Effacement des plans dans une plage
Vous pouvez effacer tous les groupes de plan d’une plage donnée :
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Remove all row outline groups fully contained in rows 2 to 10fWorksheet.clearDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW, 1, 9)Consultation des plans
Vous pouvez récupérer tous les groupes de plan d’une feuille de calcul :
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Get all row outlinesconst rowOutlines = fWorksheet.getDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW)rowOutlines.forEach((outline) => { console.log(outline.id, outline.start, outline.end, outline.collapsed)})// Get all outlines (both row and column)const allOutlines = fWorksheet.getDimensionOutlines()Structure des données d’un plan
Chaque groupe de plan possède les propriétés suivantes :
| Propriété | Type | Description |
|---|---|---|
id | string | Identifiant unique du groupe de plan |
unitId | string | Identifiant d’unité du classeur |
subUnitId | string | Identifiant de la feuille de calcul |
axis | DimensionOutlineAxis | Axe du plan (row ou column) |
start | number | Indice de début inclusif, à partir de zéro |
end | number | Indice de fin inclusif, à partir de zéro |
collapsed | boolean | Indique si le groupe est actuellement replié |
Validation et erreurs
Lors de la création de groupes de plan, les validations suivantes sont effectuées :
- Plage non valide : la plage doit être valide (valeurs non négatives et nombre d’éléments non nul).
- Dépassement des limites : la plage doit se trouver dans les limites de la feuille de calcul.
- Chevauchement de groupes : les nouveaux groupes ne peuvent pas croiser les groupes existants.
- Profondeur maximale : la profondeur d’imbrication des groupes de plan est limitée.
Pour dissocier un groupe, la plage doit contenir entièrement celle du groupe de plan ; sinon, la validation échoue.
En cas d’échec de la validation, la commande n’est pas exécutée et une erreur est émise via le SheetsOutlineErrorService.
Que pensez-vous de ce guide ?