feat(xlsx): add optional auto filter to xlsx export

This commit is contained in:
二丫讲梵 authored and GitHub committed 2026-08-27 12:18:42 +08:00
1 parent 185db5e8c6
commit d70a1231b0
29 files changed
+285 -119

No files matched your search

+10 -3
View File
@@ -1,4 +1,6 @@
use dbx_core::xlsx_export::{build_xlsx_workbook, build_xlsx_workbook_multi, XlsxWorksheetData};
use dbx_core::xlsx_export::{
build_xlsx_workbook_multi_with_auto_filter, build_xlsx_workbook_with_auto_filter, XlsxWorksheetData,
};
use serde::Deserialize;
use serde_json::Value;
@@ -15,6 +17,8 @@ pub struct QueryResultXlsxExportRequest {
pub rows: Vec<Vec<Value>>,
#[serde(default)]
pub numeric_column_right_align: bool,
#[serde(default)]
pub auto_filter: Option<bool>,
}
#[derive(Debug, Clone, Deserialize)]
@@ -22,6 +26,8 @@ pub struct QueryResultXlsxExportRequest {
pub struct QueryResultsXlsxExportRequest {
pub file_path: String,
pub worksheets: Vec<XlsxWorksheetData>,
#[serde(default)]
pub auto_filter: Option<bool>,
}
#[tauri::command]
@@ -39,7 +45,7 @@ pub async fn export_query_result_xlsx(request: QueryResultXlsxExportRequest) ->
if !data.numeric_column_right_align {
data.numeric_column_right_align = false;
}
let workbook = build_xlsx_workbook(&data)?;
let workbook = build_xlsx_workbook_with_auto_filter(&data, request.auto_filter.unwrap_or(true))?;
std::fs::write(&request.file_path, workbook).map_err(|err| err.to_string())
})
.await
@@ -49,7 +55,8 @@ pub async fn export_query_result_xlsx(request: QueryResultXlsxExportRequest) ->
#[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)?;
let workbook =
build_xlsx_workbook_multi_with_auto_filter(&request.worksheets, request.auto_filter.unwrap_or(true))?;
std::fs::write(&request.file_path, workbook).map_err(|err| err.to_string())
})
.await