i >ddlmZddlZddlZddlmZddZd dZdS) ) accumulateN)prodTc#nKddlm}|r|jjdkrt |j|}nt |jjg}|D]^}g}|D]<}t|tj r ||}| |=|}|rdg|j jz|z}|V_|r|j j Vd|j D}|j jdkrt |j }t||dD]\} }t |}|r| |z}|V dS)a> Convert a Pandas dataframe into something suitable for passing into a worksheet. If index is True then the index will be included, starting one row below the header. If header is True then column headers will be included starting one column to the right. Formatting should be done by client code. r) TimestampNc3K|]}|gVdS)N).0vs FC:\PYTHON\_runtimes\venv\Lib\site-packages\openpyxl/utils/dataframe.py z$dataframe_to_rows..%s$&&&&&&&&F)index)pandasrcolumnsnlevels expand_indexlistvalues isinstancenumpy datetime64appendrnameszip itertuples) dfrheaderrrowsrownr expandeddf_indexs r dataframe_to_rowsr$ s!       :  ! ! F33DD*++,D  CA  a!122%! ! A C 4fRX--3IIII hn&&RX&&&H x!))xU)C)CDD33ii  !S.C rFc#Kt|j}dgt|dz}g}|D]j}dgt|z}d}tt ||D]\}\} } | | ks|r| ||<d}|}|s|VU||k|rAt j| }|D]}|VdSdS)zv Expand axis or column Multiindex For columns use header = True For axes use header = False (default) NrFT) rrlen enumeraterrrarray transposetolist) rrrprevious_valueresultvaluer prior_changeidxcurrent_index_memberprevious_index_members r rr1s7%,  FVc&)nn,N Ffs5zz! BKCPUWeLfLfBgBg $ $ >C>&(=#'<<< </C#  IIII MM#    V$$..007799  CIIII  r)TT)F) itertoolsroperatorropenpyxl.compat.productrr$rr rr r5sp!  ((((((%%%%P&&&&&&r