openpyxl使用总结

2022/3/31 6:23:52

本文主要是介绍openpyxl使用总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

点击时的区域标题 ``` from openpyxl.styles import PatternFill, Font from openpyxl.drawing.image import Image from openpyxl import Workbook from typing import List import os

from core.config import settings

class Excel:
def init(self, excel_name):
self.excel_name: str = excel_name
self.excel_path: str = f'{settings.TEMP_FILE}/{self.excel_name}'
self.wb = Workbook()
self.ws = self.wb.active

def write_header(self, header: List[str], column_width: List[list]):
    """
    headers: 表头内容
    column_dimensions:表头的间隔
    """
    # 设置表头样式:黑色填充,白色字体
    fill = PatternFill("solid", fgColor='FF000000')
    font = Font(color='00FFFFFF')
    for index, v in enumerate(header):
        d = self.ws.cell(row=1, column=index + 1)
        d.value = v
        d.fill = fill
        d.font = font

    # 设置列间隔
    for row in column_width:
        self.ws.column_dimensions[row[0]].width = row[1]

def write_body(self, rows: List[dict]):
    """
    rows: [[1,2,3],[1,2,3]]
    """
    for index_row, row in enumerate(rows):
        index = 1
        for v in row.values():
            self.ws.cell(row=index_row + 2, column=index).value = v
            index += 1

    return self.__save()

def write_body_with_image(self, rows: List[dict]):
    """
    rows: [[1,2,3],[1,2,3]],
    """
    for index_row, row in enumerate(rows):
        index = 1
        for v in row.values():
            if index == 6:
                # 单元格保存图片用add_image
                image_path = f'{settings.BASE_PATH}/{v}'
                img = Image(image_path)
                # 设置宽高
                # img.width, img.height = 80, 100
                self.ws.add_image(img, f'F{index_row + 2}')
                # 设置单元格高度
                self.ws.row_dimensions[index_row + 2].height = 40
            else:
                self.ws.cell(row=index_row + 2, column=index).value = v
            index += 1

    return self.__save()

def __save(self):
    try:
        self.wb.save(self.excel_path)
        return True
    except Exception as e:
        print(f'[保存Excel报错] {e}')
        return False

# def __del__(self):
#     os.remove(self.excel_name)
</details>


这篇关于openpyxl使用总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程