pip install openpyxl
使用load_workbook函数读取一个已有的excel文件。 使用Workbook的get_sheet_by_name方法获取Worksheet对象。 使用Worksheet的cell方法获取Cell对象。
Workbook对应Excel工作簿
Worksheet对应Excel表格
Cell对应Excel单元格
#!/usr/bin/env python
#coding: utf-8
# xiayun
import openpyxl
def process_worksheet(sheet):
#设定avg_colum(平均分列),sum_column(总分列)为最后1,2行
avg_colum = sheet.max_column + 1
sum_column = sheet.max_column + 2
#指定第二行,第三列开始遍历,按行返回row单元格
for row in sheet.iter_rows(min_row=2, min_col=3):
#获取当前行单元格的分数值列表
scores = [cell.value for cell in row]
#计算总分
sum_score = sum(scores)
#计算平均分
avg_score = sum_score / len(scores)
#将平均分与总分赋予单元格
sheet.cell(row=row[0].row, column=avg_colum).value = avg_score
sheet.cell(row=row[0].row, column=sum_column).value = sum_score
#赋予平均分与总分的第一行标题
sheet.cell(row=1, column=avg_colum).value = 'avg'
sheet.cell(row=1, column=sum_column).value = 'sum'
def main():
#打开表格
wb = openpyxl.load_workbook('example.xlsx')
#获取工作簿
sheet = wb.get_sheet_by_name('student')
#运行方法
process_worksheet(sheet)
#保存表格
wb.save('example_1.xlsx')
if __name__ == '__main__':
main()
#!/usr/bin/env python
#coding: utf-8
# xiayun
import os
import glob
import openpyxl
def get_all_xlsx_files(path):
#获取所有xlsx结尾的文件
xlsx_files = glob.glob(os.path.join(path, '*.xlsx'))
#按文件小写排序
sorted(xlsx_files, key=str.lower)
return xlsx_files
def merge_xlsx_files(xlsx_files):
#打开第一个文件表格
wb = openpyxl.load_workbook(xlsx_files[0])
ws = wb.active
#新增表格标题
ws.title = "merged result"
#依次遍历其余文件表格
for filename in xlsx_files[1:]:
workbook = openpyxl.load_workbook(filename)
sheet = workbook.active
#去除首行标题
for row in sheet.iter_rows(min_row=2):
values = [cell.value for cell in row]
#单元格内容加入新增表格中
ws.append(values)
return wb
def main():
#获取所有当前程序文件所在目录的除'~lmx'之外的其余'*.xlsx'文件
xlsx_files = get_all_xlsx_files(os.path.expanduser('~lmx'))
#合并
wb = merge_xlsx_files(xlsx_files)
#保存结果
wb.save('merged_form.xlsx')
if __name__ == '__main__':
main()