Python语言中的第三方模块xlrd和xlwt是分别起读取excel的内容和写入excel的内容的作用

2020-10-18 科技 119阅读

你这里存在一个误区,只靠xlrd和xlwt不能直接实现对已经存在Excel进行数据插入,原因如下:

1、使用xlrd的xlrd.open_workbook()方法打开文件返回的是一个只读对象,只能读Excel内容,不能向Excel写入数据;

2、使用xlwt的xlwt.Workbook()方法是创建一个空的Excel对象,然后向里面写入;

所以读取和创建Excel都可以直接实现,但是修改已经存在的Excel需要借助xlutils,它的作用是在xlrd类型的workbook和xlwt类型的workbook之间建立了一个管道,利用xlutils的copy方法将只读对象变成可写对象,简单代码实现如下:

import xlrd
from xlutils.copy import copy
readOnlyWorkbook = xlrd.open_workbook('TestFile.xls')
readOnlySheet= readOnlyWorkbook.sheet_by_index(0)  # 通过sheet_by_index()获取的sheet没有write()方法
writableWorkbook= copy(readOnlyWorkbook)  # 利用xlutils.copy函数,将xlrd.Book转为xlwt.Workbook
writableSheet = writableWorkbook.get_sheet(0)  # 通过get_sheet()获取的sheet有write()方法
writableSheet.write(3, 3, 'insertData')  # 写入3,3这个单元格
writableWorkbook.save('TestFile.xls')  # 保存文件

你自己增加代码判断原Excel某个单元格是否有数据,完善你的代码,避免插入时覆盖了,运行后Excel情况见截图

上述方法我写的是不能“直接”实现已有Excel的数据插入或修改,但是可以间接的来

  1. 使用xlrd读原有Excel

  2. 使用xlwt创建一个新文件并把1中读取的内容写入

  3. 再插入需要增加的数据,保存

  4. 删掉原Excel,把新创建的Excel改成原Excel的名字

这种方法你就自己玩,因为原来Excel可能有格式啊,公式啊什么的,新创建就会很麻烦

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com