导入导出
下方 API 需要配套的转换后端。请先按导入导出集成接好文件上传、转换、任务查询和下载,再配置前端插件。快照 API 也需要转换后端,但不要求创建协同文档。
支持的格式
下表列出本页前端 API 支持的格式。Office 文件转换还需要后端支持对应的文档类型和格式。
| 导入 | 导出 |
|---|---|
.xls, .xlsx, .csv, .tsv | .xlsx, .csv, .tsv |
CSV、TSV 每次导出一个工作表,不保留工作簿样式和多个工作表。导出时传入 ExchangeFormat.CSV 或 ExchangeFormat.TSV 及 sheetId;默认导出 XLSX。前端 API 不接受 .xlsm,即使转换后端支持该格式也不能直接传入。
Facade API
导入
插件模式提示
仅插件模式需要手动引入 Facade 包。预设模式已内置对应的 Facade 包,无需额外导入。
import '@univerjs-pro/exchange-client/facade'import '@univerjs-pro/sheets-exchange-client/facade'导入 .xlsx
导入 .xlsx 文件并获取 unitId
注意事项
该方法依赖协同服务:导入后会在服务端创建文档并返回 unitId。如果未启用协同,请使用快照导入。
在启用协同编辑的时候,每个文档都有一个唯一的 unitId。使用 univerAPI.importSheetToUnitIdAsync 传入 file 参数会返回 unitId,可以通过 unitId 来访问文档。 file 参数可以是一个 File 对象,也可以是远程文件的 URL。
import '@univerjs-pro/collaboration-client/facade'const unitId = await univerAPI.importSheetToUnitIdAsync(file)if (unitId) { await univerAPI.getCollaboration().loadSheetAsync(unitId)}导入 .xlsx 文件并获取 IWorkbookData
使用 univerAPI.importSheetToSnapshotAsync 导入 .xlsx 文件,会返回 IWorkbookData 格式的文档数据。
// 接受 File 对象const snapshot = await univerAPI.importSheetToSnapshotAsync(file)// 或者接受远程文件的 URL// const snapshot = await univerAPI.importSheetToSnapshotAsync('https://example.com/filename.xlsx');// 通过快照创建一个新的工作簿if (snapshot) univerAPI.createWorkbook(snapshot)导出 .xlsx
通过 unitId 导出 .xlsx 文件
注意事项
unitId 导出依赖协同服务。如果未启用协同,请使用快照导出。
在启用协同编辑的时候,每个文档都有一个唯一的 unitId。使用 univerAPI.exportSheetByUnitIdAsync 传入 unitId 参数会返回 File 对象。
const fWorkbook = univerAPI.getActiveWorkbook()const unitId = fWorkbook.getId()const file = await univerAPI.exportSheetByUnitIdAsync(unitId)// 通过 Facade API 下载文件if (file) univerAPI.downloadFile(file, 'univer', 'xlsx')通过 IWorkbookData 导出 .xlsx 文件
使用 univerAPI.exportSheetBySnapshotAsync 传入 IWorkbookData 会返回 File 对象。
const fWorkbook = univerAPI.getActiveWorkbook()const snapshot = fWorkbook.save()const file = await univerAPI.exportSheetBySnapshotAsync(snapshot)// 通过 Facade API 下载文件if (file) univerAPI.downloadFile(file, 'univer', 'xlsx')你觉得这篇文档如何?