Если стандартное поведение импорта документов в Univer вам не подходит, его можно настроить с помощью Facade API.
Чаще всего требуется скрыть пункт импорта, добавленный плагином, или сразу открыть успешно импортированный файл в текущем экземпляре. Ниже приведены примеры кода для этих случаев.
Как скрыть пункт импорта
Режим пресетов
UniverSheetsCorePreset({ menu: { 'sheets-exchange-client.operation.exchange': { hidden: true, }, },})Режим плагинов
univer.registerPlugin(UniverSheetsUIPlugin, { menu: { 'sheets-exchange-client.operation.exchange': { hidden: true, }, },})Режим пресетов
UniverDocsCorePreset({ menu: { 'docs-exchange-client.operation.exchange': { hidden: true, }, },})Режим плагинов
univer.registerPlugin(UniverDocsUIPlugin, { menu: { 'docs-exchange-client.operation.exchange': { hidden: true, }, },})Настройка импорта PPTX в Univer Slides
Univer Slides не поддерживает режим пресетов. Чтобы скрыть меню импорта и экспорта PPTX в режиме плагинов, передайте конфигурацию menu в UniverSlidesExchangeClientPlugin:
univer.registerPlugin(UniverSlidesExchangeClientPlugin, { menu: { 'slides-exchange-client.operation.exchange': { hidden: true, }, },})Чтобы импортировать файл .pptx по URL, сначала получите объект File:
const url = 'https://example.com/filename.pptx' // Your PowerPoint file URLasync function fetchPPTXFile(url) { try { const response = await fetch(url) const blob = await response.blob() return new File([blob], 'filename.pptx', { type: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', }) } catch (error) { console.error('Failed to fetch the file:', error) }}const file = await fetchPPTXFile(url)Если вы используете серверный рабочий процесс с юнитами на сервере, импортируйте файл PPTX и загрузите созданный юнит Slides:
import { UniverInstanceType } from '@univerjs/core'const unitId = await univerAPI.importSlideToUnitIdAsync(file)if (unitId) { univerAPI.loadServerUnit(unitId, UniverInstanceType.UNIVER_SLIDE)}Если требуется только локальный рендеринг, импортируйте файл как данные слайдов и создайте презентацию:
const slideData = await univerAPI.importSlideToSnapshotAsync(file)if (slideData) { univerAPI.createPresentation(slideData)}Импорт документа по URL
Сначала необходимо получить объект File. Обычно его получают при загрузке файла пользователем или загружают по URL. В следующем примере файл .xlsx загружается по URL и преобразуется в объект File.
const url = 'https://example.com/filename.xlsx' // Your Excel file URL// Function to fetch and convert the URL to a File object.// Here, the fetch API is used to directly obtain the file,// which may need to be modified according to the actual situation,// such as file address authentication and cross-domain issues.async function fetchExcelFile(url) { try { const response = await fetch(url) const blob = await response.blob() return new File([blob], 'filename.xlsx', { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) } catch (error) { console.error('Failed to fetch the file:', error) }}// Fetch the file and import it as a snapshot// If the URL file address is not authenticated,// you can directly pass it to the importSheetToSnapshotAsync or importSheetToUnitIdAsync methodconst file = await fetchExcelFile(url)Если вы используете совместное редактирование, метод univerAPI.importSheetToUnitIdAsync позволяет импортировать файл .xlsx и получить unitId, после чего книгу можно загрузить с помощью метода univerAPI.loadServerUnit.
import { UniverInstanceType } from '@univerjs/core'// When using presets, you can import `UniverInstanceType` from `@univerjs/presets`import { UniverInstanceType } from '@univerjs/presets'univerAPI.importSheetToUnitIdAsync(file).then((unitId) => { console.log('Unit ID created:', unitId) univerAPI.loadServerUnit(unitId, UniverInstanceType.UNIVER_SHEET)})Если же нужно только импортировать файл .xlsx как снимок состояния (IWorkbookData) и отобразить его в текущем экземпляре, используйте метод univerAPI.importSheetToSnapshotAsync.
// Modify the following code according to the actual situationuniverAPI.importSheetToSnapshotAsync(file).then((snapshot) => { console.log('Snapshot created:', snapshot) // Create a new workbook with the snapshot univerAPI.createWorkbook(snapshot)})Сначала необходимо получить объект File. Обычно его получают при загрузке файла пользователем или загружают по URL. В следующем примере файл .docx загружается по URL и преобразуется в объект File.
const url = 'https://example.com/filename.docx' // Your Word file URL// Function to fetch and convert the URL to a File object.// Here, the fetch API is used to directly obtain the file,// which may need to be modified according to the actual situation,// such as file address authentication and cross-domain issues.async function fetchWordFile(url) { try { const response = await fetch(url) const blob = await response.blob() return new File([blob], 'filename.docx', { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }) } catch (error) { console.error('Failed to fetch the file:', error) }}// Fetch the file and import it as a snapshot// If the URL file address is not authenticated,// you can directly pass it to the importDocToSnapshotAsync or importDocToUnitIdAsync methodconst file = await fetchWordFile(url)Если вы используете совместное редактирование, метод univerAPI.importDocToUnitIdAsync позволяет импортировать файл .docx и получить unitId, после чего документ можно загрузить с помощью метода univerAPI.loadServerUnit.
import { UniverInstanceType } from '@univerjs/core'// When using presets, you can import `UniverInstanceType` from `@univerjs/presets`import { UniverInstanceType } from '@univerjs/presets'univerAPI.importDocToUnitIdAsync(file).then((unitId) => { console.log('Unit ID created:', unitId) univerAPI.loadServerUnit(unitId, UniverInstanceType.UNIVER_DOC)})Если же нужно только импортировать файл .docx как снимок состояния (IDocumentData) и отобразить его в текущем экземпляре, используйте метод univerAPI.importDocToSnapshotAsync.
// Modify the following code according to the actual situationuniverAPI.importDocToSnapshotAsync(file).then((snapshot) => { console.log('Snapshot created:', snapshot) // Create a new document with the snapshot univerAPI.createDocument(snapshot)})