インポートとエクスポート
Bases は XLSX、XLS、CSV、TSV のインポートと、XLSX、CSV、TSV のエクスポートに対応します。例えば、Excel の顧客一覧を取り込み、フィールドとビューを追加して、テーブルのデータを書き出せます。
これらの API には変換用のバックエンドが必要です。ファイル交換の統合から始め、バックエンドが Bases ドキュメントと必要な形式に対応することを確認してください。
対応形式
以下は、このページで説明するブラウザー API の対応形式です。Office ファイル変換には、同じドキュメント種別と形式を扱えるバックエンドが必要です。
| インポート | エクスポート |
|---|---|
.xls, .xlsx, .csv, .tsv | .xlsx, .csv, .tsv |
CSV と TSV は 1 つのテーブルを出力し、tableId で対象を選びます。これらのテキスト形式はビュー、権限、その他の Base リソースを保持しません。完全なバックアップには Base スナップショットを使ってください。
インストールと登録
初期化済みの Bases エディターに以下を追加します。
pnpm add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientnpm install @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientyarn add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientbun add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientimport { 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'import '@univerjs-pro/exchange-client/lib/index.css'import '@univerjs-pro/bases-exchange-client/lib/index.css'univer.registerPlugin(UniverExchangeClientPlugin, exchangeConfig)univer.registerPlugin(UniverBasesExchangeClientPlugin)exchangeConfig はアップロード、変換、タスク照会、ダウンロードの設定です。統合ガイドに従って用意してください。国際化の説明に従い、両パッケージの locale/en-US リソースを locales にマージします。
ページで編集するためにインポートする
file はユーザーが選択した File またはリモートファイルの URL です。返されるスナップショットはエディターが読み込める Base データです。
const snapshot = await univerAPI.importBaseToSnapshotAsync(file)if (snapshot) { univerAPI.createBase(snapshot)}スナップショットのインポートに共同編集は不要ですが、サーバー側の変換は必要です。後から作業を再開できるようにするには、スナップショットの保存と復元に従い base.save() の結果を保存します。
ファイルのエクスポート
現在の Base を Excel として書き出します。
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 と TSV は 1 つのテーブルを表します。複数のテーブルを持つ Base から出力する場合は tableId を明示してください。
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)}TSV には ExchangeFormat.CSV を ExchangeFormat.TSV に置き換えます。ファイル出力はテーブルデータの交換用です。完全なバックアップには Base スナップショットを保存してください。CSV はビュー、権限、その他のリソースを保持しません。
共同編集ドキュメントのインポート
Bases の共同編集を接続してからインポートし、サーバーが返したドキュメント ID を読み込みます。
import '@univerjs-pro/collaboration-client/facade'const unitId = await univerAPI.importBaseToUnitIdAsync(file)if (unitId) { await univerAPI.getCollaboration().loadBaseAsync(unitId)}サーバーのドキュメントは exportBaseByUnitIdAsync(unitId, format, tableId?) で出力します。ブラウザーの未送信の編集内容が同期されるのを待ってから実行してください。
Excel の構造と数式
Bases 交換プラグインの設定で変換動作を変更できます。次はデフォルト値です。先ほどの登録の代わりに使用してください。
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,})- インポート元:
AUTOは Excel テーブルと表示中のワークシートを自動選択します。TABLESは Excel テーブルのみ、SHEETSは表示中のワークシート、HYBRIDは Excel テーブルと Excel テーブルを含まない表示中のワークシートを取り込みます。 - 出力構造:
TABLESは空でない Base テーブルをネイティブの Excel テーブルにし、空のテーブルは通常の範囲にします。RANGESはすべて通常のワークシート範囲として出力します。 - 数式:インポートでは変換を試み、未対応の数式にはキャッシュ結果を使います。エクスポートはデフォルトで変換の成功を必要とします。
VALUESはキャッシュ結果のみ、TEXTは元の数式をテキストとして保持します。エクスポートのCONVERT_THEN_VALUESでも、数式を変換できなければ失敗します。
実際の業務ファイルでフィールドと数式の変換を確認してください。これらのメソッドは undefined を返す場合も、リクエストや変換のエラーを投げる場合もあります。UI で両方を処理してください。
このガイドはいかがですか?