# Importación y exportación

- Human documentation: [https://docs.univer.ai/es-ES/guides/bases/features/import-export](https://docs.univer.ai/es-ES/guides/bases/features/import-export)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/bases/features/import-export.md](https://docs.univer.ai/es-ES/guides/bases/features/import-export.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [bases/features/import-export.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/bases/features/import-export.es-ES.mdx)

---

#### Package metadata

```json
{
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs-pro/exchange-client",
      "facade": "@univerjs-pro/exchange-client/facade"
    },
    {
      "client": "@univerjs-pro/bases-exchange-client",
      "facade": "@univerjs-pro/bases-exchange-client/facade"
    }
  ],
  "license": true,
  "server": true
}
```

Bases importa **XLSX, XLS, CSV y TSV** y exporta **XLSX, CSV y TSV**. Por ejemplo, importa una lista de clientes de Excel, añade campos y vistas y exporta los datos de la tabla.

Estas API necesitan un backend de conversión. Empieza con la [integración de intercambio de archivos](https://docs.univer.ai/es-ES/server/import-export.md) y confirma que el backend admita documentos Bases y los formatos necesarios.

## Formatos compatibles

La tabla describe las API del navegador de esta página. La conversión de archivos Office necesita un backend que admita el mismo tipo de documento y formato.

| Importación                     | Exportación             |
| ------------------------------- | ----------------------- |
| `.xls`, `.xlsx`, `.csv`, `.tsv` | `.xlsx`, `.csv`, `.tsv` |

CSV y TSV exportan una sola tabla, seleccionada mediante `tableId`. Estos formatos de texto no conservan vistas, permisos ni otros recursos de Base. Usa una instantánea de Base para una copia de seguridad completa.

## Instalar y registrar

Añade estos paquetes a un [editor Bases inicializado](https://docs.univer.ai/es-ES/guides/bases/getting-started/installation.md):

#### npm

```bash
npm install @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-client
```

#### pnpm

```bash
pnpm add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-client
```

#### yarn

```bash
yarn add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-client
```

#### bun

```bash
bun add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-client
```

```ts
import { UniverBasesExchangeClientPlugin } from '@univerjs-pro/bases-exchange-client'
import { UniverExchangeClientPlugin } from '@univerjs-pro/exchange-client'

import '@univerjs-pro/bases/facade'
import '@univerjs-pro/bases-exchange-client/facade'
import '@univerjs-pro/exchange-client/facade'

univer.registerPlugin(UniverExchangeClientPlugin, exchangeConfig)
univer.registerPlugin(UniverBasesExchangeClientPlugin)
```

`exchangeConfig` contiene los ajustes de subida, conversión, consulta de tareas y descarga de la aplicación; prepáralo con la [guía de integración](https://docs.univer.ai/es-ES/server/import-export.md).

## Importar para editar en la página

`file` puede ser un `File` elegido por el usuario o la URL de un archivo remoto. La instantánea devuelta contiene datos de Base que puede cargar el editor:

```ts
const snapshot = await univerAPI.importBaseToSnapshotAsync(file)
if (snapshot) {
  univerAPI.createBase(snapshot)
}
```

Importar una instantánea no requiere colaboración, pero sí conversión en el servidor. Para que los usuarios puedan retomar el trabajo, guarda `base.save()` según [Guardar y restaurar instantáneas](https://docs.univer.ai/es-ES/guides/bases/model/base-snapshot.md).

## Exportar un archivo

Exporta la Base actual como Excel:

```ts
import { ExchangeFormat } from '@univerjs-pro/exchange-client'

const base = univerAPI.getActiveBase()
if (!base) throw new Error('Open a Base first')

const file = await univerAPI.exportBaseBySnapshotAsync(base.save(), ExchangeFormat.XLSX)
if (file) {
  univerAPI.downloadFile(file, 'database', ExchangeFormat.XLSX)
}
```

CSV y TSV representan una sola tabla. Pasa `tableId` explícitamente al exportar una Base con varias tablas:

```ts
const table = base.getTables()[0]
if (!table) throw new Error('Create a table first')

const file = await univerAPI.exportBaseBySnapshotAsync(
  base.save(),
  ExchangeFormat.CSV,
  table.getId(),
)
if (file) {
  univerAPI.downloadFile(file, table.getName(), ExchangeFormat.CSV)
}
```

Para TSV, sustituye `ExchangeFormat.CSV` por `ExchangeFormat.TSV`. La exportación de archivos intercambia datos de tablas. Para una copia completa, guarda la instantánea de Base; CSV no conserva vistas, permisos ni otros recursos.

## Importar un documento colaborativo

Conecta la [colaboración de Bases](https://docs.univer.ai/es-ES/guides/bases/features/collaboration.md), importa el archivo y carga el ID de documento devuelto por el servidor:

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

const unitId = await univerAPI.importBaseToUnitIdAsync(file)
if (unitId) {
  await univerAPI.getCollaboration().loadBaseAsync(unitId)
}
```

Usa `exportBaseByUnitIdAsync(unitId, format, tableId?)` para exportar un documento del servidor. Espera a que se sincronicen las modificaciones pendientes del navegador antes de exportar.

## Estructura y fórmulas de Excel

Configura el plugin de intercambio de Bases para cambiar la conversión. Estos son los valores predeterminados; utiliza esta configuración en lugar del registro anterior:

```ts
import {
  ExchangeBaseExportMode,
  ExchangeBaseFormulaPolicy,
  ExchangeBaseImportMode,
} from '@univerjs-pro/exchange-client'

univer.registerPlugin(UniverBasesExchangeClientPlugin, {
  importSourceMode: ExchangeBaseImportMode.AUTO,
  importFormulaPolicy: ExchangeBaseFormulaPolicy.CONVERT_THEN_VALUES,
  exportStructureMode: ExchangeBaseExportMode.TABLES,
  exportFormulaPolicy: ExchangeBaseFormulaPolicy.FAIL,
})
```

* Origen de importación: `AUTO` selecciona automáticamente tablas de Excel y hojas visibles; `TABLES` importa solo tablas de Excel; `SHEETS` importa hojas visibles; `HYBRID` importa tablas de Excel y hojas visibles sin tablas de Excel.
* Estructura de exportación: `TABLES` crea tablas nativas de Excel para tablas Base no vacías y deja las vacías como rangos normales. `RANGES` exporta todo como rangos normales de hoja.
* Fórmulas: al importar se intenta convertir y se usan resultados en caché para fórmulas no compatibles. Al exportar, la conversión debe tener éxito de forma predeterminada. Usa `VALUES` para usar solo resultados en caché o `TEXT` para conservar las fórmulas originales como texto. Al exportar, `CONVERT_THEN_VALUES` también falla si una fórmula no se puede convertir.

Verifica la conversión de campos y fórmulas con archivos reales de tu aplicación. Estos métodos pueden devolver `undefined` o lanzar errores de solicitud o conversión; gestiona ambos casos en la interfaz.

## Eliminación de los menús y las interacciones de UI de importación y exportación integrados

Univer eliminó los menús y las interacciones de UI de importación y exportación integrados. Los servicios subyacentes y las API de Facade siguen disponibles.

Si tu aplicación necesita conservar los menús y las interacciones de UI de importación y exportación existentes, consulta el [ejemplo de migración de los menús y las interacciones de UI de importación y exportación integrados](https://office.univer.ai/showcase/bases/custom-import-export) para migrar mediante un plugin personalizado. El ejemplo incluye el código fuente completo para consultarlo en línea y descargarlo.
