From 4ca29ad049cb199bb232f04a96fcc15579e6965b Mon Sep 17 00:00:00 2001 From: foefl Date: Wed, 4 Feb 2026 09:55:53 +0100 Subject: [PATCH] improve export of test results to MS-Excel --- data_analysis/02-3_oracle_workflow_test.py | 64 ++++++++++++++++++---- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/data_analysis/02-3_oracle_workflow_test.py b/data_analysis/02-3_oracle_workflow_test.py index eba003a..2488321 100644 --- a/data_analysis/02-3_oracle_workflow_test.py +++ b/data_analysis/02-3_oracle_workflow_test.py @@ -14,6 +14,7 @@ from pprint import pprint import dopt_basics.datetime as dt import oracledb +import pandas as pd import polars as pl import polars.selectors as cs import sqlalchemy as sql @@ -1289,6 +1290,9 @@ def generate_test_result_data( test_results = test_results.sort(by=["WF_ID", "BEDP_MAN"], descending=False) test_results = test_results.select(pl.int_range(1, pl.len() + 1).alias("Index"), pl.all()) + test_results = test_results.with_columns( + pl.lit(None, dtype=pl.String).alias("Anmerkungen/Feedback") + ) return test_results @@ -1296,25 +1300,61 @@ def generate_test_result_data( # %% test_results = generate_test_result_data(raw_data, pipe_res) test_results.head() + + # %% -date_str = datetime.datetime.now().strftime("%Y-%m-%d") -p_save = Path.cwd() / f"Testdatensatz_WF-100-200_{date_str}.xlsx" -test_results.to_pandas().set_index("Index").to_excel( - p_save, - freeze_panes=(1, 1), - sheet_name=f"Ergebnisse_Testphase_{date_str}", -) +def write_test_results_excel( + data: pl.DataFrame, + base_filename: str, +) -> None: + date_str = datetime.datetime.now().strftime("%Y-%m-%d") + p_save = Path.cwd() / f"{base_filename}_{date_str}.xlsx" + pd_df = data.to_pandas().set_index("Index") + + with pd.ExcelWriter(p_save, engine="xlsxwriter") as writer: + sheet_name = f"Ergebnisse_Testphase_{date_str}" + pd_df.to_excel( + writer, + freeze_panes=(1, 1), + sheet_name=sheet_name, + ) + worksheet = writer.sheets[sheet_name] + + rows, cols = pd_df.shape + columns = ["Index"] + pd_df.columns.to_list() + worksheet.add_table( + 0, + 0, + rows, + cols, + {"columns": [{"header": c} for c in columns], "style": "Table Style Light 9"}, + ) + for i, col in enumerate(columns): + if i == 0: + worksheet.set_column( + i, i, max(pd_df.index.astype(str).map(len).max(), len(col)) + 2 + ) + continue + worksheet.set_column( + i, i, max(pd_df[col].astype(str).map(len).max(), len(col)) + 2 + ) + + +# %% +write_test_results_excel(test_results, "Testdatensatz_WF-100-200") + ##################################################################### # %% # ** deviating titles where BEDP_MENGE_BEDARF_VM > MENGE_VORMERKER deviation_vm = test_results.with_columns(pl.col.MENGE_VORMERKER.fill_null(0)).filter( pl.col.BEDP_MENGE_BEDARF_VM > pl.col.MENGE_VORMERKER ) -deviation_vm = test_results.filter(pl.col.BEDP_TITELNR.is_in(dev["BEDP_TITELNR"].implode())) - -date_str = datetime.datetime.now().strftime("%Y-%m-%d") -p_save = Path.cwd() / f"Abweichungen-VM_{date_str}.xlsx" -deviation_vm.to_pandas().set_index("Index").to_excel(p_save, freeze_panes=(1, 1)) +deviation_vm = test_results.filter( + pl.col.BEDP_TITELNR.is_in(deviation_vm["BEDP_TITELNR"].implode()) +) +deviation_vm +# %% +write_test_results_excel(deviation_vm, "Abweichungen-VM") # ** WF-200 potentially triggered raw_data.filter(pl.col.MELDENUMMER.is_in((17, 18))).filter( pl.col.BEDP_TITELNR.is_duplicated()