# Importation et exportation

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

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

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [docs/features/import-export.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/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-docs-advanced",
      "locale": "@univerjs/preset-docs-advanced/locales/fr-FR",
      "style": "@univerjs/preset-docs-advanced/lib/index.css"
    }
  ],
  "plugins": [
    {
      "client": "@univerjs-pro/exchange-client",
      "facade": "@univerjs-pro/exchange-client/facade"
    },
    {
      "client": "@univerjs-pro/docs-exchange-client",
      "facade": "@univerjs-pro/docs-exchange-client/facade"
    }
  ],
  "license": true,
  "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 |
| --------------- | ----------- |
| `.doc`, `.docx` | `.docx`     |

## API Facade

### Importation

> [!INFO: 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 donc nécessaire.

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

### Importer un fichier `.docx`

#### Importer un fichier `.docx` 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`. Utilisez
> l’importation par instantané si la collaboration n’est pas activée.

Lorsque l’édition collaborative est activée, chaque document possède un `unitId` unique. L’appel de `univerAPI.importDocToUnitIdAsync` avec le paramètre `file` renvoie cet `unitId`, qui permet 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.importDocToUnitIdAsync(file)

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

#### Importer un fichier `.docx` et obtenir ses données `IDocumentData`

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

L’appel de `univerAPI.importDocToSnapshotAsync` pour importer un fichier `.docx` renvoie les données du document au format `IDocumentData`.

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

// Create a new document via snapshot
if (snapshot) univerAPI.createDocument(snapshot)
```

### Exporter un fichier `.docx`

#### Exporter un fichier `.docx` à 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 de `univerAPI.exportDocByUnitIdAsync` avec le paramètre `unitId` renvoie un objet `File`.

```typescript
const fDocument = univerAPI.getActiveDocument()
const unitId = fDocument.getId()
const file = await univerAPI.exportDocByUnitIdAsync(unitId)

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

#### Exporter un fichier `.docx` à l’aide de données `IDocumentData`

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

L’appel de `univerAPI.exportDocBySnapshotAsync` avec des données `IDocumentData` renvoie un objet `File`.

```typescript
const fDocument = univerAPI.getActiveDocument()
const snapshot = fDocument.save()
const file = await univerAPI.exportDocBySnapshotAsync(snapshot)

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

## 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/docs/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.
