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 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,
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=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
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()