# Importación y exportación

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

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

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

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

---

Antes de usar las API del navegador, completa la [integración de importación y exportación](https://docs.univer.ai/es-ES/server/import-export.md). Tu aplicación debe implementar los contratos de carga, conversión, consulta de tareas y descarga autorizada. Las API de snapshot también necesitan un backend de conversión. El [ejemplo Exchange](https://docs.univer.ai/es-ES/server/collaboration/examples.md#exchange) demuestra Sheets; verifica por separado otros productos y formatos.

#### 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 exportan una sola hoja sin formato del libro. Estas API de navegador no aceptan XLSM.",
  "headless": false,
  "server": true
}
```

## Formatos compatibles

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

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

## API de fachada

### Importar

> [!INFO: Plugin mode note]
> Solo el modo complemento requiere importar manualmente el paquete Facade. El modo preestablecido ya incluye el paquete
> Facade correspondiente, por lo que no se necesita ninguna importación adicional.

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

### Importar `.xlsx`

#### Importar el archivo `.xlsx` y obtener `unitId`

> [!WARNING: Caution]
> Este método requiere colaboración: crea un documento de servidor y devuelve un `unitId`. Utilice la importación de
> instantáneas si la colaboración no está habilitada.

Cuando la edición colaborativa está habilitada, cada documento tiene un `unitId` único. El uso de `univerAPI.importSheetToUnitIdAsync` con el parámetro `file` devolverá el `unitId`, que se puede utilizar para acceder al documento. El parámetro `file` puede ser un objeto `File` o una URL de archivo remoto.

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

const unitId = await univerAPI.importSheetToUnitIdAsync(file)

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

#### Importe el archivo `.xlsx` y obtenga `IWorkbookData`

> [!NOTE]
> La importación de instantáneas no requiere colaboración. Utilice la importación `unitId` para documentos
> colaborativos.

Usar `univerAPI.importSheetToSnapshotAsync` para importar un archivo `.xlsx` devolverá los datos del documento en el formato `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)
```

### Exportar `.xlsx`

#### Exportar `.xlsx` archivo usando `unitId`

> [!WARNING: Caution]
> La exportación `unitId` requiere colaboración. Si la colaboración no está habilitada, utilice la exportación de
> instantáneas.

Cuando la edición colaborativa está habilitada, cada documento tiene un `unitId` único. El uso de `univerAPI.exportSheetByUnitIdAsync` con el parámetro `unitId` devolverá un objeto `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')
```

#### Exportar el archivo `.xlsx` usando `IWorkbookData`

> [!NOTE]
> La exportación de instantáneas no requiere colaboración y es adecuada para flujos de trabajo locales.

Usar `univerAPI.exportSheetBySnapshotAsync` con `IWorkbookData` devolverá un objeto `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')
```

## 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/sheets/custom-import-export) para migrar mediante un plugin personalizado. El ejemplo incluye el código fuente completo para consultarlo en línea y descargarlo.
