Excel处理模块
第三方开源模块安装
pip install openpyxl
01.打开文件
1.1 创建Excel表格
import openpyxl
# 创建一个新的工作簿对象/实例化
wb = openpyxl.Workbook()
# 获取工作表对象(sheet)
ws = wb.active
print(ws)
# 设置Sheet名称
ws.title = '学生表'
#打印sheet表名
ws.title = "学生个人信息表" #改sheet名
print(ws)
1.2 打开已有文件
import openpyxl
# 获取工作簿对象
wb = openpyxl.load_workbook('学生表.xlsx')
# 获取所有工作表名称
print(wb.sheetnames)
1.3 输出文件中的内容
import openpyxl
# 获取工作簿对象
wb = openpyxl.load_workbook('学生表.xlsx')
# 获取所有工作表名称
print(wb.sheetnames)
# 获取工作表对象,三种方法
sheet1 = wb['学生表']
sheet4 = wb.worksheets[3]
print(sheet1, sheet4)
# 获取工作表名称
title = sheet4.title
print(title)
# 获取工作表总行数
rows = sheet1.max_row
# 获取工作表总列数
cols = sheet1.max_column
# 总行,总列
print(rows, cols)
# 获取某一单元格内容(行, 列),例:2行1列,列表从1开始;也可以直接sheet1.cell(2, 1).value
cell = sheet1.cell(row=2, column=1).value
print(cell)
# 读取第一行的所有内容
row_list = []
for i in range(1, cols+1):
cell_value = sheet1.cell(row=1, column=i).value
row_list.append(cell_value)
print(row_list)
# 读取第一列的所有内容
column_list = []
for i in range(1, rows+1):
cell_value = sheet1.cell(row=i, column=1).value
column_list.append(cell_value)
print(column_list)
# 读取第二列的所有内容,不包含空值
col_values = []
# 遍历第二列所有行
for i in range(1, rows+1):
# 获取当前单元格的值
cell_value = sheet1.cell(row=i, column=2).value
# 如果当前单元格的值不为空
if cell_value is not None:
# 将当前单元格的值添加到列表中
col_values.append(cell_value)
print(col_values, len(col_values)
1.4 Excel表格原图
1.5 输出结果
02.写入数据
2.1 写入方法
# 方式一:数据直接分配到单元格(或直接输入公式)
sheet4["A1"] = "日期"
sheet4["A2"] = "周一"
直接输入公式:
import xlsxwriter #必须要导入的库函数
def write_excel(all):
workbook = xlsxwriter.Workbook('test.xlsx') # 表名
worksheet = workbook.add_worksheet(u'sheet1')
# 表头 也可使用worksheet.write('0', '0', 'A') worksheet.write('0', '1', 'B')的方式
worksheet.write('A1', 'A')
worksheet.write('B1', 'B')
worksheet.write('C1', 'C')
worksheet.write('D1', 'D')
# 二维数组多行写入
for x, one in enumerate(all):
for y, i in enumerate(one):
# 第一行为表头,x需+1
worksheet.write(x + 1, y, i)
workbook.close()
if __name__ == '__main__':
all = []
for i in range(1, 5):
one = []
for j in range(6, 10):
one.append(i * j)
all.append(one)
write_excel(all)
# 方式二:追加数据,从第一列开始附加(从最下方空白处,最左开始)(可多行输入)
sheet.append([学生,性别,年龄,专业])
注意:上述方式二适用于数据追加,写入方式为excel表格的后续空白行,且逗号分割开的为不同列
2.2写入示例
代码:
import openpyxl
# 获取工作簿对象
wb = openpyxl.load_workbook('学生表.xlsx')
# 获取所有工作表名称
print(wb.sheetnames)
# 获取工作表对象,三种方法
sheet1 = wb['学生表']
sheet4 = wb.worksheets[3]
sheet4["A1"] = "日期"
sheet4["A2"] = "周一"
sheet4["A3"] = "周二"
sheet4["A4"] = "周三"
sheet4["A5"] = "周四"
sheet4["A6"] = "周五"
sheet4["B1"] = "值日生"
sheet4["B2"] = "张三"
sheet4["B3"] = "李四"
sheet4["B4"] = "王五"
sheet4["B5"] = "赵六"
sheet4["B6"] = "王老七"
wb.save("学生表.xlsx")
print(sheet1, sheet4)
写入结果:
03. 读取数据
3.1 读取单行数据代码
from openpyxl import Workbook,load_workbook
wb = load_workbook("学生表.xlsx")
print(wb.sheetnames)
sheet = wb.get_sheet_by_name("值日表") !!!方法过旧,不常用
print(sheet["B5"])
print(sheet["B5"].value)
注意:上述获取excel数据列的get_sheet_by_name(“值日表”)方法不常用
3.2切片式获取数据
#获取指定列的切片数据
for cell in sheet["B2:B8"]:
print(cell[0].value)
结果
3.3 区域式获取数据
# 规范输出指定区域的代码
for row in sheet.iter_rows(min_row=1,max_row=6,max_col=2):
for cell in row:
print(cell.value,end=",")
print()
3.4 花式遍历
按行遍历
for row in sheet: #循环获取表数据
for cell in row: #循环获取每个单元格的数据
print(cell.value,ecd=",")
print()
按列遍历
# A1,A2,A3这样的顺序
for column in sheet.columns:
for cell in column:
print(cell.value,end=",")
print()
遍历指定行&列
for row in sheet.iter_rows(min_row=1,max_row=6,max_col=2):
for cell in row:
print(cell.value,end=",")
print()
2,A3这样的顺序
for column in sheet.columns:
for cell in column:
print(cell.value,end=“,”)
print()
#### 遍历指定行&列
```python
for row in sheet.iter_rows(min_row=1,max_row=6,max_col=2):
for cell in row:
print(cell.value,end=",")
print()