python操作excel(xlsx)

往 excel 写数据(xlsx)

#!D:/Tools/python-3.6.5-embed-amd64
# _*_ coding:utf-8 _*_
import os

import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment
from xlutils.copy import copy

# 创建excel文件
def write_data_xlsx(excel_save_path, sheet_name, data_title_list, data_list):
    if os.path.exists(excel_save_path):
        wbk = openpyxl.load_workbook(excel_save_path)
    else:
        wbk = openpyxl.Workbook()
    for i in range(len(data_list)):
        # 数据太多时,一个sheet会显示不了,这里设置超过100W行在添加一个sheet
        if i % 1000000 == 0:
            sheet_index = i // 1000000
            new_sheet_name = sheet_name
            if sheet_index >= 1:
                new_sheet_name = sheet_name + str(sheet_index)
            if check_sheet_xlsx(wbk, "Sheet"):
                sheet = wbk.get_sheet_by_name("Sheet")
                sheet.title = new_sheet_name
            else:
                sheet = wbk.create_sheet(new_sheet_name)
            # 冻结第一行
            sheet.freeze_panes = 'A2'
            for k in range(len(data_title_list)):
                date_title = data_title_list[k]
                sheet.cell(row=1, column=k + 1, value=date_title)
                # 设置第一行的样式
                set_title_style_xlsx(sheet.cell(row=1, column=k + 1))
                sheet_row = 1
        for j in range(len(data_list[i])):
            sheet.cell(row=sheet_row + 1, column=j + 1, value=data_list[i][j])
        sheet_row += 1
    wbk.save(excel_save_path)
    print("excel保存成功")


# 判读 sheet_name 是否已经存在
def check_sheet_xlsx(wbk, sheet_name):
    # wbk = openpyxl.Workbook()
    sheet_names = wbk.sheetnames
    for item in sheet_names:
        if item == sheet_name:
            return True
    return False;


# 设置title的默认样式
def set_title_style_xlsx(cell):
    font = Font(name='SimSun', bold=True)
    cell.font = font
    fill = PatternFill("solid", fgColor="00BFFF")
    cell.fill = fill
    align = Alignment(horizontal='center', vertical='center', wrap_text=True)
    cell.alignment = align


if __name__ == "__main__":
    data_title_list = ["姓名", "年龄", "职位"]
    data_list = []
    data_list.append(["小明", 22, "程序猿"])
    data_list.append(["小红", 22, "UI设计"])
    write_data_xlsx("D:/MyData/temp/B/temp.xlsx", "员工信息", data_title_list, data_list)

效果图
在这里插入图片描述

读取excel的数据(xlsx)

#!D:/Tools/python-3.6.5-embed-amd64
# _*_ coding:utf-8 _*_
import os

import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment
from xlutils.copy import copy

# 获取excel的内容
def get_data_xlsx(excel_path, sheet_name):
    workbook = openpyxl.load_workbook(excel_path)
    sheet = workbook.get_sheet_by_name(sheet_name)

    data_list = []
    max_row = sheet.max_row
    max_col = sheet.max_column
    for i in range(max_row):
        row_data = []
        for j in range(max_col):
            row_data.append(sheet.cell(row=i + 1, column=j + 1).value)
        data_list.append(row_data)
    return data_list

if __name__ == "__main__":
    datas = get_data_xlsx("D:/MyData/temp/B/temp.xlsx", "员工信息")
    for data in datas:
        print(data)

打印效果
[‘姓名’, ‘年龄’, ‘职位’]
[‘小明’, 22, ‘程序猿’]
[‘小红’, 22, ‘UI设计’]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值