feat(xlsx): add optional auto filter to xlsx export
This commit is contained in:
29 files changed
+285
-119
No files matched your search
@@ -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
|
||||
|
||||
Reference in new issue
Block a user