已有Excel表,只需要读取(xlrd)
没有Excel表,只需要创建,并且只是写入数据(xlwt)
有Excel表,需要读取,又需要写入(以xlutils为中介的xlrd和xlwt运用)
我一开始接触就是它们3个,但是在我是应用中,觉得它们有点局限性,即使是有xlutils将xlrd和xlwt融合后.
我当时想读取一个表里面的一个sheet,然后处理数据,并新建一个sheet输出,而且为了防止一些可能的意外,导致要第二次运行程序,重写新表数据,所以还要进行新建表重复判断删除.
很遗憾的是它们3个混合是无法进行删除的,虽然意外可能不怎么会发生,但是我调试代码的时候,每次都要打开Excel文件删除sheet,贼烦的
import openpyxl
# 导入openpyxl模块
def ExcelOperate(path):
# Window 路径替换 因为.save(path)是需要用"/"路径的
path=path.replace('\\','/')
# 这里我只分两种情况:有Excel表和无Excel表的情况:
# 第一种情况:有Excel表
# 加载已有的Excel表格
Book=openpyxl.load_workbook(path)
# 得到第1个Sheet的名字,并用名字获取Sheet对象
Sheet = Book[Book.sheetnames[0]]
# 遍历整个Sheet有效行(Sheet.iter_rows()就能获取当前Sheet全部有效行)
for row in Sheet.iter_rows():
# 获取到单行的全部内容,使用下标来获取某行的单元格,再使用value方法读取单元格内容。
print(row[1].value)
# 修改内容。行为1,列为2的单元格内容改为:测试
Sheet.cell(row=1, column=2, value="测试")
# 保存覆盖原有文件
Book.save(path)
'''
openpyxl.load_workbook() 加载Excel文档
Book[name] 获取名为name的sheet,
Book.sheetnames() 这个是获取Book的所有sheet名,以list的形式返回
Sheet.iter_rows() 把sheet里全部内容以行的形式返回
Sheet.rows 直接遍历行需要转list或tuple后以下标来读取(外加.value)
Sheet.cell(row,column,value) 修改指定行列的单元格内容
注意:get系列的方法已经是弃用了的
如果使用弃用方法并不会报错,但是会在命令行提示使用新的方法
(例如:get_sheet_names(),执行会提示:Deprecated: Use wb.sheetnames)
'''
手机扫一扫
移动阅读更方便
你可能感兴趣的文章