improve export of test results to MS-Excel

This commit is contained in:
Florian Förster 2026-02-04 09:55:53 +01:00
parent c244285c4d
commit 4ca29ad049

View File

@ -14,6 +14,7 @@ from pprint import pprint
import dopt_basics.datetime as dt import dopt_basics.datetime as dt
import oracledb import oracledb
import pandas as pd
import polars as pl import polars as pl
import polars.selectors as cs import polars.selectors as cs
import sqlalchemy as sql 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.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.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 return test_results
@ -1296,25 +1300,61 @@ def generate_test_result_data(
# %% # %%
test_results = generate_test_result_data(raw_data, pipe_res) test_results = generate_test_result_data(raw_data, pipe_res)
test_results.head() test_results.head()
# %% # %%
date_str = datetime.datetime.now().strftime("%Y-%m-%d") def write_test_results_excel(
p_save = Path.cwd() / f"Testdatensatz_WF-100-200_{date_str}.xlsx" data: pl.DataFrame,
test_results.to_pandas().set_index("Index").to_excel( base_filename: str,
p_save, ) -> 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), freeze_panes=(1, 1),
sheet_name=f"Ergebnisse_Testphase_{date_str}", 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 # ** deviating titles where BEDP_MENGE_BEDARF_VM > MENGE_VORMERKER
deviation_vm = test_results.with_columns(pl.col.MENGE_VORMERKER.fill_null(0)).filter( deviation_vm = test_results.with_columns(pl.col.MENGE_VORMERKER.fill_null(0)).filter(
pl.col.BEDP_MENGE_BEDARF_VM > pl.col.MENGE_VORMERKER 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())) deviation_vm = test_results.filter(
pl.col.BEDP_TITELNR.is_in(deviation_vm["BEDP_TITELNR"].implode())
date_str = datetime.datetime.now().strftime("%Y-%m-%d") )
p_save = Path.cwd() / f"Abweichungen-VM_{date_str}.xlsx" deviation_vm
deviation_vm.to_pandas().set_index("Index").to_excel(p_save, freeze_panes=(1, 1)) # %%
write_test_results_excel(deviation_vm, "Abweichungen-VM")
# ** WF-200 potentially triggered # ** WF-200 potentially triggered
raw_data.filter(pl.col.MELDENUMMER.is_in((17, 18))).filter( raw_data.filter(pl.col.MELDENUMMER.is_in((17, 18))).filter(
pl.col.BEDP_TITELNR.is_duplicated() pl.col.BEDP_TITELNR.is_duplicated()