demo_deploy_streamlit_app / src /utils /excel_export.py
thinh-vu's picture
Upload 12 files
021d91d verified
Raw
History Blame Contribute Delete
1.45 kB
import pandas as pd
import io
from datetime import datetime
def flatten_multiindex_columns(df):
"""
Chuyển đổi MultiIndex columns thành cột đơn để xuất Excel
Args:
df: DataFrame có MultiIndex columns
Returns:
DataFrame với cột đã được làm phẳng
"""
if isinstance(df.columns, pd.MultiIndex):
df = df.copy()
df.columns = [f"{col[0]}_{col[1]}" if col[1] else col[0] for col in df.columns]
return df
def to_excel(dataframes, sheet_names):
"""
Xuất nhiều DataFrame ra file Excel
Args:
dataframes: List các DataFrame
sheet_names: List tên sheet tương ứng
Returns:
BytesIO chứa dữ liệu Excel
"""
output = io.BytesIO()
with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
for df, sheet_name in zip(dataframes, sheet_names):
# Flatten MultiIndex columns trước khi xuất
df_flattened = flatten_multiindex_columns(df)
df_flattened.to_excel(writer, sheet_name=sheet_name, index=False)
output.seek(0)
return output
def generate_excel_filename(symbol):
"""
Tạo tên file Excel với mã cổ phiếu và ngày hiện tại
Args:
symbol: Mã cổ phiếu
Returns:
Tên file Excel
"""
return f"{symbol}_financial_report_{datetime.now().strftime('%Y%m%d')}.xlsx"