mirror of
https://github.com/apache/superset.git
synced 2026-04-20 00:24:38 +00:00
feat: Add excel export (#22006)
Co-authored-by: Igor Șincariov <igorsinc@pm.me> Co-authored-by: EugeneTorap <evgenykrutpro@gmail.com>
This commit is contained in:
@@ -46,7 +46,7 @@ from superset.exceptions import (
|
||||
from superset.extensions import cache_manager, security_manager
|
||||
from superset.models.helpers import QueryResult
|
||||
from superset.models.sql_lab import Query
|
||||
from superset.utils import csv
|
||||
from superset.utils import csv, excel
|
||||
from superset.utils.cache import generate_cache_key, set_and_log_cache
|
||||
from superset.utils.core import (
|
||||
DatasourceType,
|
||||
@@ -446,15 +446,20 @@ class QueryContextProcessor:
|
||||
return CachedTimeOffset(df=rv_df, queries=queries, cache_keys=cache_keys)
|
||||
|
||||
def get_data(self, df: pd.DataFrame) -> Union[str, List[Dict[str, Any]]]:
|
||||
if self._query_context.result_format == ChartDataResultFormat.CSV:
|
||||
if self._query_context.result_format in ChartDataResultFormat.table_like():
|
||||
include_index = not isinstance(df.index, pd.RangeIndex)
|
||||
columns = list(df.columns)
|
||||
verbose_map = self._qc_datasource.data.get("verbose_map", {})
|
||||
if verbose_map:
|
||||
df.columns = [verbose_map.get(column, column) for column in columns]
|
||||
result = csv.df_to_escaped_csv(
|
||||
df, index=include_index, **config["CSV_EXPORT"]
|
||||
)
|
||||
|
||||
result = None
|
||||
if self._query_context.result_format == ChartDataResultFormat.CSV:
|
||||
result = csv.df_to_escaped_csv(
|
||||
df, index=include_index, **config["CSV_EXPORT"]
|
||||
)
|
||||
elif self._query_context.result_format == ChartDataResultFormat.XLSX:
|
||||
result = excel.df_to_excel(df, **config["EXCEL_EXPORT"])
|
||||
return result or ""
|
||||
|
||||
return df.to_dict(orient="records")
|
||||
|
||||
Reference in New Issue
Block a user