# Importation et exportation

- Human documentation: [https://docs.univer.ai/fr-FR/guides/sheets/features/import-export](https://docs.univer.ai/fr-FR/guides/sheets/features/import-export)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/sheets/features/import-export.md](https://docs.univer.ai/fr-FR/guides/sheets/features/import-export.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [sheets/features/import-export.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/sheets/features/import-export.fr-FR.mdx)

---

Avant d’utiliser les API ci-dessous, suivez l’[intégration des imports/exports](https://docs.univer.ai/fr-FR/server/import-export.md). Votre application doit fournir les contrats de téléversement, conversion, suivi des tâches et téléchargement autorisé. Les API de snapshot nécessitent aussi un backend de conversion. L’[exemple Exchange](https://docs.univer.ai/fr-FR/server/collaboration/examples.md#exchange) concerne Sheets ; vérifiez séparément les autres produits et formats.

#### Package metadata

```json
{
  "preset": [
    {
      "client": "@univerjs/preset-sheets-advanced",
      "locale": "@univerjs/preset-sheets-advanced/locales/en-US",
      "style": "@univerjs/preset-sheets-advanced/lib/index.css"
    }
  ],
  "plugins": [
    {
      "client": "@univerjs-pro/exchange-client",
      "facade": "@univerjs-pro/exchange-client/facade"
    },
    {
      "client": "@univerjs-pro/sheets-exchange-client",
      "facade": "@univerjs-pro/sheets-exchange-client/facade"
    }
  ],
  "license": true,
  "limitations": "CSV/TSV exportent une seule feuille sans mise en forme du classeur. Ces API navigateur refusent XLSM.",
  "headless": false,
  "server": true
}
```

## Formats pris en charge

Le tableau décrit les API du navigateur présentées ici. La conversion des fichiers Office nécessite un backend compatible avec le même type de document et le même format.

| Importation                     | Exportation             |
| ------------------------------- | ----------------------- |
| `.xls`, `.xlsx`, `.csv`, `.tsv` | `.xlsx`, `.csv`, `.tsv` |

## API Facade

### Importation

> [!INFO: 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.

```typescript
import '@univerjs-pro/exchange-client/facade'
import '@univerjs-pro/sheets-exchange-client/facade'
```

### Importation d’un fichier `.xlsx`

#### Importer un fichier `.xlsx` et obtenir son `unitId`

> [!WARNING: Attention]
> Cette méthode nécessite la collaboration : elle crée un document sur le serveur et renvoie un `unitId`. Si la
> collaboration n’est pas activée, utilisez l’importation par instantané.

Lorsque l’édition collaborative est activée, chaque document possède un `unitId` unique. L’appel à `univerAPI.importSheetToUnitIdAsync` avec le paramètre `file` renvoie le `unitId` permettant d’accéder au document. Le paramètre `file` peut être un objet `File` ou l’URL d’un fichier distant.

```typescript
import '@univerjs-pro/collaboration-client/facade'

const unitId = await univerAPI.importSheetToUnitIdAsync(file)

if (unitId) {
  await univerAPI.getCollaboration().loadSheetAsync(unitId)
}
```

#### Importer un fichier `.xlsx` et obtenir un objet `IWorkbookData`

> [!NOTE]
> L’importation par instantané ne nécessite pas la collaboration. Pour les documents collaboratifs, utilisez
> l’importation par `unitId`.

L’appel à `univerAPI.importSheetToSnapshotAsync` pour importer un fichier `.xlsx` renvoie les données du document au format `IWorkbookData`.

```typescript
// Accept a File object
const snapshot = await univerAPI.importSheetToSnapshotAsync(file)
// Or accept a remote file URL
// const snapshot = await univerAPI.importSheetToSnapshotAsync('https://example.com/filename.xlsx');

// Create a new workbook via snapshot
if (snapshot) univerAPI.createWorkbook(snapshot)
```

### Exportation d’un fichier `.xlsx`

#### Exporter un fichier `.xlsx` à l’aide de son `unitId`

> [!WARNING: Attention]
> L’exportation par `unitId` nécessite la collaboration. Si la collaboration n’est pas activée, utilisez l’exportation
> par instantané.

Lorsque l’édition collaborative est activée, chaque document possède un `unitId` unique. L’appel à `univerAPI.exportSheetByUnitIdAsync` avec le paramètre `unitId` renvoie un objet `File`.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()
const unitId = fWorkbook.getId()
const file = await univerAPI.exportSheetByUnitIdAsync(unitId)

// Download the file through the Facade API
if (file) univerAPI.downloadFile(file, 'univer', 'xlsx')
```

#### Exporter un fichier `.xlsx` à l’aide d’un objet `IWorkbookData`

> [!NOTE]
> L’exportation par instantané ne nécessite pas la collaboration et convient aux flux de travail locaux.

L’appel à `univerAPI.exportSheetBySnapshotAsync` avec les données `IWorkbookData` renvoie un objet `File`.

```typescript
const fWorkbook = univerAPI.getActiveWorkbook()
const snapshot = fWorkbook.save()
const file = await univerAPI.exportSheetBySnapshotAsync(snapshot)

// Download the file through the Facade API
if (file) univerAPI.downloadFile(file, 'univer', 'xlsx')
```

## Suppression des menus et des interactions UI d’importation et d’exportation intégrés

Univer a supprimé les menus et les interactions UI d’importation et d’exportation intégrés. Les services sous-jacents et les API Facade restent disponibles.

Si votre application doit conserver les menus et les interactions UI d’importation et d’exportation existants, consultez l’[exemple de migration des menus et des interactions UI d’importation et d’exportation intégrés](https://office.univer.ai/showcase/sheets/custom-import-export) pour effectuer la migration avec un plugin personnalisé. L’exemple fournit le code source complet, consultable en ligne et téléchargeable.
