【1】python之操作 excel 库openpyxl 速查

import openpyxl
#打开文件
wb = oepnpyxl.load_workbook('example.xlsx')

#workbook
##workbook对象属性
wb.active    //获取活跃的worksheet
wb.read_only
wb.encoding
wb.properties  //文档元数据,如标题、创建者、创建日期
##workbook对象方法
wb.sheetnames //获取所有表格名称
ws = wb['sheetname']   //获取worksheet对象
wb.remove_sheet         //删除工作表
wb.create_sheet         //创建工作表
wb.copy_worksheet
wb.save('sample.xlsx')   //保存工作簿

#worksheet
##worksheet对象属性
ws.title       //表格标题
ws.dimensions //表格大小区域  ,A1:E11
ws.max_row     //最大行
ws.min_row     //最小行
ws.max_column   //最大列
ws.min_column   //最小列
ws.rows        //按行获取单元格(cell对象)
ws.columns     //按列获取单元格(cell对象)
ws.values       //按行获取表格内容
ws.freeze_panes  //冻结窗格,冻结第一行-A2;冻结第一列B1;冻结第一行列B2
##columns rows values 通过生成器返回数据
##worksheet对象方法
iter_rows        //按行获取所有单元格,可以指定起点、终点
list(ws.iter_rows(min_row=2, max_row=4, min_col=1, max_col=3))  //使用例子 
iter_columns
append           //在表格末尾加数据
merged_cell      //合并多个单元格
unmerged_cell    //移除合并的单元格

#Cell对象
ws['A2']   //cell对象
ws.cell(row=1, column=2)
##cell属性
row        //单元格所在行
column     //单元格所在列
cordinate  //单元格的坐标,行和列

##打印表格内容
###Example 1
for row in ws.values;
    print(*row)

###Example 2
for row in ws.rows:
    print(*[cell.value for cell in row])

###Example 3
for row in ws.iter_rows():
    print(*[cell.value for cell in row])

示例代码1

#!/usr/bin/python
#-*- coding: utf-8 -*-
import openpyxl

##计算表中学生的总成绩和平均成绩

def process_worksheet(sheet):
    avg_column = sheet.max_column + 1
    sum_column = sheet.max_column + 2

    for row in sheet.iter_rows(min_row=2, min_col=3):
        scores = [cell.value for cell in row]
        sum_scores = sum(scores)
        avg_scores = sum_scores / len(scores)

        #计算平均分和总分,并且保存到最后两列
        sheet.cell(row=row[0].row, column=avg_column).value = avg_scores
        sheet.cell(row=row[0].row, column=sum_column).value = sum_scores
    #设置平均分和总分的标题部分
    sheet.cell(row=1, column=avg_column).value = 'avg'
    sheet.cell(row=1, column=sum_column).value = 'sum'

def main():
    wb = openpyxl.load_workbook('example.xlsx')
    sheet = wb['student']
    process_worksheet(sheet)
    wb.save('example_copy.xlsx')

if __name__ == '__main__':
    main()

示例代码2

#!/usr/bin/python
#-*- coding: utf-8 -*-
import os 
import glob

import openpyxl

##合并多个excle到一个

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):
            value = [cell.value for cell in row]
            ws.append(value)

    return wb

def get_all_xlsx_files(path):
    xlsx_files = glob.glob(os.path.join(path, '*.xlsx'))
    sorted(xlsx_files, key=str.lower)
    return xlsx_files

def main():
    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()

Leave a Reply

Your email address will not be published. Required fields are marked *