python openpyxl库读写更新excel表格

安装openpyxl库

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple # 清华镜像源

1.读取excel文件内容

def read_file(self):
        """
        读取表格文件
        :param file_path:
        :return:
        """
        f = openpyxl.load_workbook(self.file_path)
        # sheet_list = f.sheetnames
        sheet_platform = f.get_sheet_by_name(self.region)  # 获取第一个sheet内容
        log.logger.debug("sheet_platform:{}".format(sheet_platform))
        #
        # 获取sheet的最大行数和列数
        rows = sheet_platform.max_row
        cols = sheet_platform.max_column
        for r in range(1, rows):
            for c in range(1, cols):
                log.logger.debug(sheet_platform.cell(r, c).value)
            if r == 10:
                break

2.写入excel文件内容

def write_file(self, file_path):
        """
        创建并写入新文件
        :param file_path:
        :return:
        """
        outwb = openpyxl.Workbook()  # 打开一个将写的文件
        outws = outwb.create_sheet(title="测试", index=0)  # 在将写的文件创建sheet
        for row in range(1, 70000):
            for col in range(1, 4):
                outws.cell(row, col).value = row * 2  # 写文件
            log.logger.debug(row)
        outwb.save(file_path)  # 一定要记得保存

3.更新excel文件内容

def update_file(self, row, col, content):
        """
        :param row: 行
        :param clo: 列
        :param content: 写入内容
        :return: None
        """
        log.logger.debug("self.file_path:{}".format(self.file_path))
        f = openpyxl.load_workbook(self.file_path)
        f.template = True
        f.active.title = self.region
        result = f.active.cell(row, col, content)
        if content == "NO":
            result.font = self.red_font()
        elif content == "YES":
            result.font = self.green_font() # 设置字体方法
        result.alignment = self.alignment_config() # 设置对齐方式
        result.border = self.border_config() # 设置边框
        result = f.active.cell(row, 17, datetime.datetime.now())
        result.alignment = self.alignment_config()
        result.border = self.border_config()
        f.save(self.file_path)
        f.close()
	def red_font(self):
        """
        设置字体颜色为红色
        return:
        """
        return Font(color='cc0000', bold=True)

    def green_font(self):
        """
        设置字体颜色为绿色
        return:
        """
        return Font(color='66ff00', bold=True)
	def background_config(self):
        """
        设置单元格颜色
        return:
        """
        return PatternFill(patternType="solid", start_color="3399ff")

    def alignment_config(self):
        """
        设置对其方式
        return
        """
        return Alignment(horizontal='center', vertical='center', wrap_text=False)

    def border_config(self):
        """
        设置边框
        return
        """
        thin = Side(border_style="thin", color="000000")
        return Border(left=thin, right=thin, top=thin, bottom=thin)

4.设置excel表样式

4.1Border 边框 Side 边线

from openpyxl.styles import Border, Side

border_type=Side(border_style=None, color='FF000000')
border = Border(left=border_type,
                right=border_type,
                top=border_type,
                bottom=border_type,
                diagonal=border_type,
                diagonal_direction=0,
                outline=border_type,
                vertical=border_type,
                horizontal=border_type
)
"""
常用的样式:
‘dashDot’,‘dashDotDot’,‘dashed’,‘dotted’,‘double’,
‘hair’,‘medium’,‘mediumDashDot’,‘mediumDashDotDot’,
‘mediumDashed’,‘slantDashDot’,‘thick’,‘thin’
"""

4.2设置字体

from openpyxl.styles import Font

font = Font(name='Calibri',
            size=11,
            color='FF000000',
            bold=False,
            italic=False,
            vertAlign=None,
            underline='none',
            strike=False)
"""
字体名称、字体大小、字体颜色、加粗、斜体、
纵向对齐方式有三种:baseline,superscript, subscript)、
下划线、删除线,字体颜色可以用RGB 或 aRGB
"""

4.3填充

from openpyxl.styles import PatternFill

# fill_type 的样式为 None 或 solid
fill = PatternFill(fill_type = None,start_color='FFFFFF',end_color='000000')


"""
fill_type类型有:'none'、'solid'、'darkDown'、'darkGray'、'darkGrid'、'darkHorizontal'、'darkTrellis'、'darkUp'、'darkVertical'、'gray0625'、
'gray125'、'lightDown'、'lightGray'、'lightGrid'、'lightHorizontal'、
'lightTrellis'、'lightUp'、'lightVertical'、'mediumGray'
"""

4.4对齐方式

from openpyxl.styles import Alignment

align = Alignment(horizontal='left',vertical='center',wrap_text=True)
"""
horizontal代表水平方向,可以左对齐left,还有居中center和右对齐right,分散对齐distributed,跨列居中centerContinuous,两端对齐justify,填充fill,常规general
vertical代表垂直方向,可以居中center,还可以靠上top,靠下bottom,两端对齐justify,分散对齐distributed
自动换行:wrap_text,这是个布尔类型的参数,这个参数还可以写作wrapText
"""
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值