美文网首页python3
python3 利用openpyxl的excel操作

python3 利用openpyxl的excel操作

作者: 欢乐时光欢乐你我 | 来源:发表于2019-05-04 17:10 被阅读0次

python处理excel已经有大量包,主流代表有:

•xlwings:简单强大,可替代VBA

•openpyxl:简单易用,功能广泛

•pandas:使用需要结合其他库,数据处理是pandas立身之本

•win32com:不仅仅是excel,可以处理office;不过它相当于是 windows COM 的封装,新手使用起来略有些痛苦。

•Xlsxwriter:丰富多样的特性,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

•DataNitro:作为插件内嵌到excel中,可替代VBA,在excel中优雅的使用python

•xlutils:结合xlrd/xlwt,老牌python包,需要注意的是你必须同时安装这三个库

代码示例:

#coding=utf-8
'''
Created on 2019年4月20日
@author: xushuai
'''
import openpyxl
import openpyxl.styles
import random
from openpyxl.utils import get_column_letter
# 打开已有的excel

def createSheet():
    # ------------------ 表操作 ------------------
    # 新建sheet表
    wb.create_sheet(index=2, title="sheet2")  # 可通过index控制创建的表的位置
    wb.create_sheet(index=3, title="sheet3")  # 可通过index控制创建的表的位置
    wb.create_sheet(index=4, title="sheet4")  # 可通过index控制创建的表的位置
    # 获取所有表名
    sheet_names = wb.sheetnames  # 得到工作簿的所有工作表名 结果: ['Sheet1', 'Sheet2', 'Sheet3']
    print(sheet_names)
    # 根据表名删除sheet表
    wb.remove(wb[sheet_names[2]])  # 删除上一步建的第3个工作表
    sheet_names = wb.sheetnames  # 得到工作簿的所有工作表名 结果: ['Sheet1', 'Sheet2', 'Sheet3']
    print(sheet_names)
    


def insert():
    # ------------------ 写入数据 ------------------
    sheet1.cell(row=1, column=2, value="B1")  # 修改第一行第二列的单元格的值为B1
    # sheet1["A1"] = "A1"  # 直接修改A1单元格的值为A1
    sheet1.cell(row = 4, column = 2).value = 'test'
    
    sheet1["B11"] = "B11"  # 新增B11单元格的值为B11
    sheet1.title = "test_sheet"  # 修改sheet1的表名为test_sheet
    print("--- insert数据 ------------------")
    for row in range(1, 20):
        for col in range(1, 54):
            sheet1.cell(column=col, row=row, value=random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()') )




def read():
    # ------------------ 读取数据 ------------------
    print("--- 读取数据 ------------------")
    # 获取单元格数据
    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)
        
    print(list_sheet1_column_C)
     
    # 获取第1行的所有数据
    list_sheet1_row_1 = []
    
    for i in sheet1[1]:
        list_sheet1_row_1.append(i.value)
    print(list_sheet1_row_1) 
    
    # 读取所有数据
    list_sheet1_all = []
    for row in sheet1.rows:
        for cell in row:
            list_sheet1_all.append(cell.value)  # 按行循环获取所有的值,保存在 list_sheet1_all 列表中
    
    print(list_sheet1_all) 


def createWorkBook():
    # 新建一个空excel,表名为sheet,文件名为test
    wb = openpyxl.Workbook()  # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)
    wb.save(excelpath)
    print('--------------WorkBook-----creatsed')

def saveFile():        
    # ----------------保存文件
    wb.save(excelpath)

def style():
    # ------------------ 表格样式调整 ------------------
    # 表格样式支持:字体、颜色、模式、边框、数字格式等
     
    # 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



# -------------------------------------------------------------------------------------
excelpath = "E:\\pythonWorkspace\\test.xlsx"

wb = openpyxl.load_workbook(excelpath)

sheet_names = wb.sheetnames
# 根据表名打开sheet表
sheet1 = wb[sheet_names[0]]  # 打开第一个 sheet 工作表

style()
saveFile()






相关文章

网友评论

    本文标题:python3 利用openpyxl的excel操作

    本文链接:https://www.haomeiwen.com/subject/ujqfoqtx.html