发现python很好玩,它会提供单纯的读、写的模块,所以我需要一个可以读写的模块

 

XlsxWriter

xlrd

openpyxl

介绍

可以创建XLSX文件

用来读取xls文件,是python-excel的三大模块

可以读写XLSX、XLSM文件


×





×


.xls

×


×

.xlsx


×


大文件


×


 注释:Excel 2003 即XLS文件有大小限制即65536行256列,所以不支持大文件,而Excel 2007以上即XLSX文件的限制则为1048576行16384列

1、基本功能

1.1、导入模块

#安装模块
pip install openpyxl
#导入模块
import openpyxl

1.2、新建

#不存在会创建
workbook = openpyxl.Workbook()
workbook.save('C:/Users/admin/Desktop/5.xlsx')

1.3、打开

workbook= openpyxl.load_workbook('C:/Users/admin/Desktop/1.xlsx)

1.4、sheet操作

# 获取名为Sheet1的工作表
sheet1 = workbook['sheet1']
# 新建sheet表
workbook.create_sheet(index=1, title="sheet2")
# 得到工作簿的所有工作表名
sheet_names = workbook.sheetnames
print(sheet_names)
# 根据表名删除sheet表
workbook.remove(workbook[sheet_names[2]])

1.5、读操作

# 获取最大列数
cols = sheet1.max_column
# 获取最大行数
rows = sheet1.max_row
# 获取单元格A1值
A1_value = sheet1['A1'].value
# 获取单元格A1列号
A1_column = sheet1['A1'].column
# 获取单元格A1行号
A1_row = sheet1['A1'].row
# 获取第一行第一列的单元格值
A1 = sheet1.cell(row=1, column=1).value

1.6、写操作

# ------------------ 写入数据 ------------------
# 修改第一行第一列的单元格的值
sheet1.cell(row=1, column=1, value="111")
# 直接修改B1单元格的值
sheet1["B1"] = "2020-10-10"
# 修改sheet1的表名为test_sheet
sheet1.title = "test_sheet"

1.7、表格样式调整

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

1.8、保存退出

# 注意 excel被手动打开后,保存会失败
workbook.save('C:/Users/admin/Desktop/1.xlsx')  
workbook.close()

1.9、完整代码

import openpyxl
import openpyxl.styles

# 打开已有的excel
workbook= openpyxl.load_workbook('C:/Users/admin/Desktop/1.xlsx')
# 获取名为Sheet1的工作表
sheet_names = workbook.sheetnames
sheet1 = workbook[sheet_names[0]]
# 新建sheet表
workbook.create_sheet(index=1, title="sheet2")
# 得到工作簿的所有工作表名
sheet_names = workbook.sheetnames
print(sheet_names)
# 根据表名删除sheet表
workbook.remove(workbook[sheet_names[1]])
# ------------------ 读取数据 ------------------
# 获取最大列数
cols = sheet1.max_column
# 获取最大行数
rows = sheet1.max_row
# 获取单元格A1值
A1_value = sheet1['A1'].value
# 获取单元格A1列号
A1_column = sheet1['A1'].column
# 获取单元格A1行号
A1_row = sheet1['A1'].row
# 获取第一行第一列的单元格值
A1 = sheet1.cell(row=1, column=1).value
print(cols)
print(rows)
print(A1_value)
print(A1_column)
print(A1_row)
print(A1)
# 获取A列的所有数据
list_column_A = []
for A_Cell in sheet1["A"]:
    list_column_A.append(A_Cell.value)
print(list_column_A)
# 获取第1行的所有数据
list_row_1 = []
for row in sheet1[1]:
    list_row_1.append(row.value)
print(list_row_1)
# 读取所有数据
list_sheet1_all = []
for row in sheet1.rows:
    for cell in row:
        # 按行循环获取所有的值
        list_sheet1_all.append(cell.value)
print(list_sheet1_all)
# ------------------ 写入数据 ------------------
# 修改第一行第一列的单元格的值
sheet1.cell(row=1, column=1, value="111")
# 直接修改B1单元格的值
sheet1["B1"] = "2020-10-10"
# 修改sheet1的表名为test_sheet
sheet1.title = "test_sheet"
# ------------------ 表格样式调整 ------------------
# 表格样式支持:字体、颜色、模式、边框、数字格式等
# A1单元格 等线24号加粗斜体,字体颜色浅蓝色
sheet1["A1"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)
# B1单元格 水平上下居中
sheet1["B1"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
# 第一行高度设置为30
sheet1.row_dimensions[1].height = 30

# C列的宽度设置为35
sheet1.column_dimensions["A"].width = 35

workbook.save('C:/Users/admin/Desktop/1.xlsx')  # 注意 excel被手动打开后,保存会失败
workbook.close()