Tools

import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
from openpyxl.utils.dataframe import dataframe_to_rows

class Tools:
    def save_to_excel(self, data_list, file_name, sheet_name):
        df = pd.DataFrame(data_list)
        wb = Workbook()
        # if os.path.exists(file_name):
        #     wb = openpyxl.load_workbook(file_name)
        # else:
        #     wb = Workbook()
        ws = wb.active
        ws.title = sheet_name

        # 将DataFrame写入工作表
        for row in dataframe_to_rows(df, index=False, header=False):
            ws.append(row)

        # 格式化标题行
        for cell in ws[1]:
            cell.font = Font(bold=True, size=12)
            cell.fill = PatternFill(start_color="00FFAA00", end_color="00FFAA00", fill_type="solid")
            cell.alignment = Alignment(horizontal="center", vertical="center")

        # 格式化数据行
        thin_border = Border(left=Side(style='thin'),
                             right=Side(style='thin'),
                             top=Side(style='thin'),
                             bottom=Side(style='thin'))

        for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
            for cell in row:
                # cell.font = Font(size=12)
                cell.border = thin_border

        # 调整列宽
        for col in ws.columns:
            max_length = 0
            column_name = col[0].column_letter  # Get the column name
            for cell in col:
                # 设置单元格的对齐方式,启用自动换行
                cell.alignment = Alignment(wrap_text=True)
                try:
                    if len(str(cell.value)) > max_length:
                        max_length = len(cell.value)
                except:
                    pass
            adjusted_width = (max_length + 12)
            ws.column_dimensions[column_name].width = adjusted_width
        # 调整行高
        for row in range(2, ws.max_row):
            ws.row_dimensions[row].height = 15

        wb.save(file_name)
        # with pd.ExcelWriter(file_name, mode='a', engine='openpyxl') as writer:
        #     df.to_excel(writer, sheet_name=sheet_name, index=False, header=False)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值