# Импорт и экспорт

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

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

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

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

---

Перед использованием API браузера выполните [интеграцию импорта и экспорта](https://docs.univer.ai/ru-RU/server/import-export.md). Приложение реализует загрузку, конвертацию, опрос задач и скачивание с проверкой доступа. API снимков также требуют сервера конвертации. [Пример Exchange](https://docs.univer.ai/ru-RU/server/collaboration/examples.md#exchange) предназначен для Sheets; поддержку других продуктов и форматов проверяйте отдельно.

#### 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 экспортируют один лист без форматирования книги. Эти браузерные API не принимают XLSM.",
  "headless": false,
  "server": true
}
```

## Поддерживаемые форматы

В таблице указаны форматы браузерных API этой страницы. Для преобразования файлов Office нужен сервер с поддержкой соответствующего типа документа и формата.

| Импорт                          | Экспорт                 |
| ------------------------------- | ----------------------- |
| `.xls`, `.xlsx`, `.csv`, `.tsv` | `.xlsx`, `.csv`, `.tsv` |

## Facade API

### Импорт

> [!INFO: Примечание о режиме плагинов]
> Импортировать пакет Facade вручную нужно только в режиме плагинов. В режиме предустановок соответствующий пакет Facade
> уже включён, поэтому дополнительный импорт не требуется.

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

### Импорт `.xlsx`

#### Импорт файла `.xlsx` с получением `unitId`

> [!WARNING: Внимание]
> Для этого способа требуется совместная работа: он создаёт документ на сервере и возвращает `unitId`. Если совместная
> работа не включена, используйте импорт по снимку.

Когда совместное редактирование включено, у каждого документа есть уникальный `unitId`. Вызов `univerAPI.importSheetToUnitIdAsync` с параметром `file` возвращает `unitId`, по которому можно получить доступ к документу. В качестве параметра `file` можно передать объект `File` или URL удалённого файла.

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

const unitId = await univerAPI.importSheetToUnitIdAsync(file)

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

#### Импорт файла `.xlsx` с получением `IWorkbookData`

> [!NOTE]
> Для импорта по снимку совместная работа не требуется. Для документов с совместным доступом используйте импорт по
> `unitId`.

С помощью `univerAPI.importSheetToSnapshotAsync` можно импортировать файл `.xlsx` и получить данные документа в формате `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)
```

### Экспорт `.xlsx`

#### Экспорт файла `.xlsx` по `unitId`

> [!WARNING: Внимание]
> Для экспорта по `unitId` требуется совместная работа. Если она не включена, используйте экспорт по снимку.

Когда совместное редактирование включено, у каждого документа есть уникальный `unitId`. Вызов `univerAPI.exportSheetByUnitIdAsync` с параметром `unitId` возвращает объект `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')
```

#### Экспорт файла `.xlsx` из `IWorkbookData`

> [!NOTE]
> Для экспорта по снимку совместная работа не требуется, поэтому он подходит для локальных сценариев.

Вызов `univerAPI.exportSheetBySnapshotAsync` с данными `IWorkbookData` возвращает объект `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')
```

## Удаление встроенных меню и UI-взаимодействий для импорта и экспорта

Univer больше не включает встроенные меню и UI-взаимодействия для импорта и экспорта. Базовые сервисы и Facade API остаются доступными.

Если вашему приложению нужны прежние меню и UI-взаимодействия для импорта и экспорта, используйте [пример миграции встроенных меню и UI-взаимодействий для импорта и экспорта](https://office.univer.ai/showcase/sheets/custom-import-export), чтобы реализовать их с помощью собственного плагина. Полный исходный код примера доступен для просмотра онлайн и скачивания.
