先下载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文件