使用Python处理Excel文件
下载openpyxl模块
pip install openpyxl
import openpyxl # load_workbook()打开Excel文件 wb = openpyxl.load_workbook('test_excel.xlsx') print(type(wb)) # 属性sheetnames获得当前工作簿的所有工作表对象,以列表形式返回 allsheets = wb.sheetnames print(allsheets) # 根据工作表的名称获取工作表对象 ws = wb['Sheet1'] # 属性title获得当前工作表的名称 print(ws.title, type(ws))
获取单元格内容
# ws['栏行'].value取得工作表内容 print(ws['A2'].value) # cell(column=,row=).value取得单元格内容 print(ws.cell(column=1, row=1).value)
取得工作表的栏数和行数
print(ws.max_column) print(ws.max_row)
遍历工作表
# 利用ws.rows,ws.columns数据产生器遍历工作表 for row in ws.rows: for cell in row: print("%10s" % cell.value, end="") print()
字段的字母与数值的互相转换
# 字段的字母与数值的互相转换 from openpyxl.utils import get_column_letter, column_index_from_string print(get_column_letter(27)) print(column_index_from_string('AB'))
利用切片方法获取某区间数据
# 利用切片方法获取某区间数据 for row in ws['A2':'C5']: for cell in row: print(cell.value,end='') print()
新建空白Excel文件并存储
# 建立空白Excel文件并存储文件
wb1 = openpyxl.Workbook()
# 新建工作表
ws1 = wb1.create_sheet('class')
wb1.save('excel2.xlsx')
复制文件
# 利用save()复制文件 wb.save('excel3.xlsx')
新建工作表
# 新建工作表 wb.create_sheet() wb.create_sheet(index=0, title='fir') # 建立第一个工作表 wb.create_sheet(index=2, title='third') # 建立第三个工作表
删除工作表
# 删除工作表 wb.remove(wb["Sheet"]) print(wb.sheetnames)
写入单元格
# 写入单元格 ws['A6'] = '田七' ws['B6'] = 13 ws['C6'] = '女' wb.save('excel4.xlsx')
将列表数据写入单元格
# 将列表数据写入单元格 row1 = ['王二', 15, '男'] ws.append(row1) wb.save('excel4.xlsx')
设定单元格字体
# 设定单元格字体 from openpyxl.styles import Font ft1 = Font(name='宋体', size=20, bold=True) ws['A1'].font = ft1 wb.save('excel4.xlsx')
数学公式的使用
# 数学公式的使用 # 加总 ws['D1'] = '总和' ws['D2'] = '=SUM(B2:B5)' #平均 ws['E1'] = '平均' ws['E2'] = '=AVERAGE(B2:B5)' # 最大值 ws['F1'] = '最大值' ws['F2'] = '=MAX(B2:B5)' # 最小值 ws['G1'] = '最小值' ws['G2'] = '=MIN(B2:B5)' wb.save('excel4.xlsx')
设定单元格的高度和宽度
# 设定单元格的高度和宽度 ws.row_dimensions[1].height = 40 # 设置单元格的高度 ws.column_dimensions.width = 80 # 设置单元格的宽度 wb.save('excel4.xlsx')
单元格对齐方式
# 单元格对齐方式 from openpyxl.styles import Alignment ws['A1'].alignment = Alignment(horizontal='left',vertical='top') ws['B1'].alignment = Alignment(horizontal='center', vertical='bottom') wb.save('excel4.xlsx')
合并与取消合并单元格
# 合并单元格
ws.merge_cells('A10:C10') ws.merge_cells('A12:A15') ws.merge_cells('D10:f13') wb.save('excel4.xlsx')
# 取消合并单元格
ws.unmerge_cells('D10:f13')
wb.save('excel4.xlsx')
柱形图
# 柱形图 from openpyxl.chart import BarChart,Reference barchart = BarChart() barchart.title = '学生信息统计表' barchart.y_axis.title = '年龄' barchart.x_axis.title = '姓名' # 建立数据对象 data = Reference(ws,min_col=2,min_row=1,max_row=6) barchart.add_data(data, titles_from_data=True) # x轴的标记名称 xtitle = Reference(ws,min_col=1,min_row=2,max_row=6) barchart.set_categories(xtitle) # 放置图表的位置 ws.add_chart(barchart, 'H5') wb.save('excel4.xlsx')
3D柱形图
# 3D柱形图 from openpyxl.chart import BarChart3D, Reference barchart3d = BarChart3D() barchart3d.title = '学生信息统计表' barchart3d.x_axis.title = 'name' barchart3d.y_axis.title = 'age' # 建立数据对象 data = Reference(ws,min_col=2,min_row=1,max_row=6) barchart3d.add_data(data, titles_from_data=True) # x轴的标记名称 xtitle = Reference(ws,min_col=1,min_row=2,max_row=6) barchart3d.set_categories(xtitle) # 放置图表的位置 ws.add_chart(barchart3d, 'H10') wb.save('excel4.xlsx')
饼图
# 饼图 from openpyxl.chart import PieChart, Reference piechart = PieChart() piechart.title = 'oooooo' # 建立数据对象 data =Reference(ws,min_col=2,min_row=1,max_row=6) piechart.add_data(data, titles_from_data=True) # 标签名称 lbl = Reference(ws, min_col=1, min_row=2, max_row=6) piechart.set_categories(lbl) # 放置图表的位置 ws.add_chart(piechart, 'K1') wb.save('excel4.xlsx')
3D饼图
# 3D饼图 from openpyxl.chart import PieChart3D,Reference piechart3d = PieChart3D() piechart3d.title='tttttt' # 建立数据对象 data =Reference(ws,min_col=2,min_row=1,max_row=6) piechart3d.add_data(data, titles_from_data=True) # 标签名称 lbl = Reference(ws, min_col=1, min_row=2, max_row=6) piechart3d.set_categories(lbl) # 放置图表的位置 ws.add_chart(piechart3d, 'K15') wb.save('excel4.xlsx')