feat(export): support multi-result xlsx export

This commit is contained in:
t8y2 committed 2026-06-19 14:05:08 +08:00
1 parent 1a5e2d6247
commit 954dba1e13
17 files changed
+477 -51

No files matched your search

+18 -1
View File
@@ -1,4 +1,4 @@
use dbx_core::xlsx_export::{build_xlsx_workbook, XlsxWorksheetData};
use dbx_core::xlsx_export::{build_xlsx_workbook, build_xlsx_workbook_multi, XlsxWorksheetData};
use serde::Deserialize;
use serde_json::Value;
@@ -11,6 +11,13 @@ pub struct QueryResultXlsxExportRequest {
pub rows: Vec<Vec<Value>>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QueryResultsXlsxExportRequest {
pub file_path: String,
pub worksheets: Vec<XlsxWorksheetData>,
}
#[tauri::command]
pub async fn export_query_result_xlsx(request: QueryResultXlsxExportRequest) -> Result<(), String> {
tauri::async_runtime::spawn_blocking(move || {
@@ -24,3 +31,13 @@ pub async fn export_query_result_xlsx(request: QueryResultXlsxExportRequest) ->
.await
.map_err(|err| err.to_string())?
}
#[tauri::command]
pub async fn export_query_results_xlsx(request: QueryResultsXlsxExportRequest) -> Result<(), String> {
tauri::async_runtime::spawn_blocking(move || {
let workbook = build_xlsx_workbook_multi(&request.worksheets)?;
std::fs::write(&request.file_path, workbook).map_err(|err| err.to_string())
})
.await
.map_err(|err| err.to_string())?
}