Python读取和修改Excel文件(.xlsx)
工作中需要批量修改excel文件内容,尝试写个小工具,节省重复劳动,第一次写小工具,在摸索中尝试。
已知环境:Python2.0环境+pycharm
1.import openpyxl
安装openpyxl包
方法一:手动下载
(1).openpyxl的下载地址:
https://pypi.python.org/pypi/openpyxl
下载到我自己的文件夹,我存在D:\software\python packages里。
(2).cmd进入上述文件夹里,我使用的命令是:
cd d/ D:\software\python packages
(3).pip install
直接pip install这个压缩文件即可,不要试图去解压。我使用的命令是:
pip install openpyxl-2.6.2.tar.gz
(4) import openpyxl
方法二:直接使用pip命令下载安装(使用管理员账号运行cmd)
2.创建工作薄和获取工作薄
# coding=utf-8
import openpyxl
import os
path = 'C:\Users\Think\Desktop\python\testFile.xlsx' #定义路径
#判断该路径下是否有该文件,如果有删除
if os.path.exists(path):
os.remove(path)
# 创建一个workbook对象,相当于创建了一个Excel文件
workbook = openpyxl.Workbook()
#wb = openpyxl.Workbook(encoding='UTF-8')
#获取当前活跃的worksheet,默认就是第一个worksheet
worksheet = workbook.active
worksheet.title = "mysheet"
3.创建新的工作表
worksheet2 = workbook.create_sheet("test", 1) #插在工作薄末尾,sheet名字为test
4.将数据写入工作表
#写入数据
Title = ['学号', '姓名', '成绩']
Name = ['张三', '王五', '赵柳', '李四', '王武', '周瑜', '郑旺']
StuNo = ['001', '002', '003', '004', '005', '006', '007']
Score = [100, 78, 89, 98, 64, 70, 95]
#写入第一行
for i in range(len(Title)):
worksheet.cell(1, i+1, Title[i])
#从第二行开始写入第一列
for i in range(len(Name)):
worksheet.cell(i+2, 1, Name[i])
#从第二行开始写入第二列
for i in range(len(StuNo)):
worksheet.cell(i+2, 2, StuNo[i])
#从第二行开始写入第三列
for i in range(len(Score)):
worksheet.cell(i+2, 3, Score[i])
5.保存工作薄
#保存到工作薄
workbook.save(path)
6.修改已存在的工作薄——插入一列
将前面保存的testFile.xlsx作为我们要修改的表格,我们计划在最前面插入一列“编号”,如下所示:
#插入一列
workbook = openpyxl.load_workbook(path)
worksheet = workbook.worksheets[0]
#在第一列之前插入一列
worksheet.insert_cols(1)
for index, row in enumerate(worksheet.rows):
if index == 0:
row[0].value = "编号"
else:
row[0].value = index
workbook.save(path)
运行结果如下:
心得:代码还是要多敲,一些看似很简单的东西,尤其是那些觉得大眼一看就知道怎么回事的,写出来才能发现问题,比如:我刚开始写的时候,会碰到很多等号前后没有加空格这种类似的的语法错误。