python3 office

excel

pip3 install openpyxl

import openpyxl
import openpyxl.styles
import pymysql

# 新建一个空excel,表名为sheet,文件名为test
wb = openpyxl.Workbook()  # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)

# ==================sheet 操作=======================
# 新建sheet表
wb.create_sheet(index=2, title="sheet3")  # 可通过index控制创建的表的位置
# 获取所有表名
sheet_names = wb.sheetnames  # 得到工作簿的所有工作表名 结果: ['Sheet1', 'Sheet2', 'Sheet3']
# 根据表名删除sheet表
# wb.remove(wb[sheet_names[2]])  # 删除上一步建的第3个工作表
# 根据表名打开sheet表
sheet1 = wb[sheet_names[0]]  # 打开第一个 sheet 工作表
db = pymysql.connect("localhost", "zz", "123", "my", charset='utf8')
cursor = db.cursor()


# =================read sheet=======================
# 获取单元格数据
def readexcel(sheet1):
    sheet1_max_colum = sheet1.max_column  # 获取最大列数 结果:3
    # ws = wb.active  # 获取当前活动的sheet页
    sheet1_max_row = sheet1.max_row  # 获取最大行数 结果:10
    A1_value = sheet1['A1'].value  # 获取单元格A1值 结果:a1
    A1_column = sheet1['A1'].column  # 获取单元格A1列值 结果: A
    A1_row = sheet1['A1'].row  # 获取单元格A1行号 结果: 1
    A1 = sheet1.cell(row=1, column=1).value  # 获取第一行第一列的单元格值 结果:a1
    # 获取C列的所有数据
    list_sheet1_column_C = []
    for i in sheet1["C"]:
        list_sheet1_column_C.append(i.value)
    # 获取第1行的所有数据
    list_sheet1_row_1 = []
    for i in sheet1[1]:
        list_sheet1_row_1.append(i.value)
    # 读取所有数据
    list_sheet1_all = []
    for row in sheet1.rows:
        for cell in row:
            list_sheet1_all.append(cell.value)  # 按行循环获取所有的值,保存在 list_sheet1_all 列表中


# ================write Date====================
def writeData(sheet):
    cursor.execute("select * from event_1")
    excel_filed = ('id',)
    title_list = [item[0] for item in cursor.description if item[0] not in excel_filed]#去掉id字段
    for col in range(0, len(title_list)):
        sheet.cell(row=1, column=col + 1, value=title_list[col])
    excel_data_title = ",".join(title_list)
    cursor.execute("select %s from event_1" % excel_data_title)
    write_data = cursor.fetchall()
    for row in range(0, len(write_data)):
        for col in range(0, len(cursor.description)):
            sheet.cell(row=row+2, column=col+1, value=write_data[row][col])
            print(write_data[row][col], end="\t")
        print()
    wb.save('test.xlsx')
    # sheet1.cell(row=1, column=2, value="B1")  # 修改第一行第二列的单元格的值为B1
    # sheet1["A1"] = "A1"  # 直接修改A1单元格的值为A1
    # sheet1["B11"] = "B11"  # 新增B11单元格的值为B11
    # sheet1.title = "test_sheet"  # 修改sheet1的表名为test_sheet


# =============== 表格样式调整 ==================
def styledo(sheet1):
    # 表格样式支持:字体、颜色、模式、边框、数字格式等
    # A1单元格 等线24号加粗斜体,字体颜色浅蓝色
    sheet1["B11"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)
    # B1单元格 水平上下居中
    sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
    # 第一行高度设置为30
    sheet1.row_dimensions[1].height = 30
    # C列的宽度设置为35
    sheet1.column_dimensions["C"].width = 35


def displaysqldata(sql, my_cursor):
    my_cursor.execute(sql)
    title_list = [item[0] for item in my_cursor.description]  # 获取表格的字段名称
    for title in title_list:
        print("%-15s" % title, end="")
    print()
    for values in my_cursor.fetchall():
        for value in values:
            print("%-15s" % value, end="")
        print()


# displaysqldata("select * from login", cursor)
writeData(sheet1)
wb.save('test.xlsx')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值