使用openpyxl处理Excel文件

先下载openpyxl

pip3 install -i  https://pypi.douban.com/simple/ openpyxl

使用

import openpyxl

# 打开一个Excel文档
wb = openpyxl.load_workbook('test.xlsx')
sheet2 = wb['Sheet2']

# 获取单元格内容
# 方式1:
for row in sheet2.values:
    print(*row)
# 方式2:
print('====================================')
for row in sheet2.rows:
    print(*[cell.value for cell in row])
# 方式3:
print('====================================')
for row in sheet2.iter_rows():
    print(*[cell.value for cell in row])
# 方法4(最复杂,最原始):
print('====================================')
for i in range(sheet2.min_row, sheet2.max_row + 1):
    for j in range(sheet2.min_column, sheet2.max_column + 1):
        print(sheet2.cell(row=i, column=j).value, end=' ')
    print()

# 获取指定单元格
# print(sheet2['A1'])
# print(sheet2.cell(row=1, column=2))
# print(sheet2.cell(row=2, column=1))

# 获取行
# print(sheet2.rows)
# print(sheet2.columns)
# print(sheet2.values)


# print(sheet2.title)
# print(sheet2.dimensions)
# print(sheet2.max_row)
# print(sheet2.min_row)
# print(sheet2.max_column)
# print(sheet2.min_column)


# 查看Excel文档的属性
# print(wb.read_only)
# print(wb.properties)

# 文档的字符集格式
# print(wb.encoding)

# 获取活跃的工作表worksheet
# wb.active

# 获取所有的工作表
# print(wb.worksheets)

# 获取所有工作表的名称
# print(wb.sheetnames)
# print(wb.get_sheet_names())

# 根据表格名称获取worksheet对象,区分大小写
# print(wb['Sheet2'])
# print(wb['表1'])

# 创建一个新的worksheet
# wb.create_sheet('成绩表')

# 删除一个工作表
# sheet1 = wb.get_sheet_by_name('Sheet1')
# wb.remove_sheet(sheet1)


# 保存workbook的修改
# wb.save('test.xlsx')

在Excel中存储学生成绩

import openpyxl

# 打开workbook
wb = openpyxl.load_workbook('成绩表.xlsx')
# 创建一个成绩表
# wb.create_sheet("学生成绩表")
# wb.remove_sheet(wb["Sheet1"])

# 获取“学生成绩表”
score = wb["学生成绩表"]

score['A1'].value = '序号'
score['B1'].value = '姓名'
score['C1'].value = '语文'
score['D1'].value = '数学'

# 保存workbook
wb.save('成绩表.xlsx')

插入工作表内容

先由一下图片创建Excle文件

在这里插入图片描述
在这里插入图片描述

再执行以下代码

#coding=utf-8
import openpyxl


def process_worksheet(sheet):
    # 总分所在的列
    sum_column = sheet.max_column + 2
    # 平均分所在的列
    avg_column = sheet.max_column + 1
    # 将总分和平均分保存到最后两列
    for row in sheet.iter_rows(min_row=2, min_col=3):
        # 单元格
        score = [cell.value for cell in row]
        # 总分
        sum_score = sum(score)
        # 平均分
        avg_score = sum_score / len(score)
        # 将总分和平均分保存到最后两列
        sheet.cell(row=row[0].row, column=avg_column).value = avg_score
        sheet.cell(row=row[0].row, column=sum_column).value = sum_score

    # 设置平均分和总分的标题
    sheet.cell(row=1, column=avg_column).value = "平均分"
    sheet.cell(row=1, column=sum_column).value = "总分"


def main():
    # 打开Excel文档
    wb = openpyxl.load_workbook("成绩表.xlsx")
    # 获取一个工作表
    sheet = wb["学生成绩表"]
    #    把外部Excel文件(成绩表)中的sheet(成绩)插入当前Excel中
    process_worksheet(sheet)
    # 保存“练习.xlsx”
    wb.save("练习-copy.xlsx")


if __name__ == '__main__':
    main()

最后生成练习-copy.xlsx文件

在这里插入图片描述
在这里插入图片描述

快速合并多个Excel文档

参考文档

https://www.jianshu.com/p/19219542bf23

先下载xlrd和xlwt

在这里插入图片描述

读取数据

import xlrd


book = xlrd.open_workbook('练习-copy.xlsx')
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
print('表格总行数:',nrows)
ncols = sheet1.ncols
print('表格总列数:',ncols)
row3_values = sheet1.row_values(2)
print('第三行的值:',row3_values)
col3_values = sheet1.col_values(2)
print('第三列的值:',col3_values)
cell_3_3 = sheet1.cell(2,2).value
print('三行三列的值:',cell_3_3)
表格总行数: 3
表格总列数: 7
第三行的值: [2.0, '李四', 80.0, 95.0, 91.0, 88.66666666666667, 266.0]
第三列的值: ['语文', 87.0, 80.0]
三行三列的值: 80.0

写入数据

import xlwt


wb = xlwt.Workbook()
wb_sheet = wb.add_sheet('ddd')
wb_sheet.write(0,0,'测试内容')
wb.save('d.xlsx')

生成d.xlsx文件

在这里插入图片描述

利用pandas读取excel

先安装pandas

查看列表内容

import pandas as pd


df = pd.read_excel(r'练习-copy.xlsx',sheet_name='学生成绩表')
print(df.head())
   序号  姓名  语文   数学  物理        平均分   总分
0   1  张三  87  100  95  94.000000  282
1   2  李四  80   95  91  88.666667  266

写入列表数据

import pandas as pd
from pandas import DataFrame


data = {
        'name':['张三','李四','王五'],
        'age':[11,12,13],
        'sex':['男','女','未知'],
}
df = DataFrame(data)
df.to_excel('new.xlsx')

然后就会生成new.xlsx文件

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值