from xlutils.copy import copy,python xlutils
1.python中xlutils的复制模块xlrd库只用于读取excel文件中的数据;
Xlwt库用于将数据写入excel文件;
但是,当你想添加或修改已有的excel文件,也就是编辑函数时,这两个库是无法完成的。
Xtills库仅在复制副本后保存新文件。Xtills库就像是xlrd库和xlwt库之间的桥梁。因此,Xtills库依赖于xlrd和xlwt库。这三个库既能满足操作Excel的基本需求,又需要熊猫库进行大数据分析。
xlutils模块的作用是作为xlrd和xlwt之间的桥梁,解决了xlrd中的book对象无法编辑的问题。Xlrd。Book对象被转换成xlwt。工作簿对象,从而实现对原始excel文件的编辑功能。
1.xlutils复制原始文件。
导入xlrd
从xlutils.copy导入副本
workbook=xlrd . Open _ workbook( mcw _ test . xlsx )#打开工作簿
New_workbook=copy(workbook) #将xlrd对象的副本转换为xlwt对象
new _ workbook . Save( mcw _ test . xlsx )#保存工作簿
新工作簿的工作表内容是一样的,sheet2的部分数据已经复制,但格式没有复制:
2.获取复制前原工作簿的信息和复制后新工作簿的信息:workbook=xlrd . Open _ workbook( mcw _ test . xlsx )#打开工作簿
Sheets=workbook.sheet_names() #获取工作簿中所有工作表的名称,并形成一个列表元素。
worksheet=workbook . sheet _ by _ name(sheets[0])#通过sheets[0]工作表名称获取工作簿中所有工作表的第一张工作表。
Rows_old=worksheet.nrows #获取第一个工作表中现有数据的行数。
打印(工作表,工作表[0],工作表,工作表. nrows)
-结果:-结果:
[幻风云变人物列表, Sheet2 , Sheet3]幻风云变人物列表xlrd.sheet.sheet对象at0x 029 EC 7 f 04 work book=xlrd . Open _ workbook( MCW _ test . xlsx )#打开工作簿
New_workbook=copy(workbook) #将xlrd对象的副本转换为xlwt对象
new _ worksheet=new _ workbook . Get _ sheet(0)#获取转换后的工作簿中的第一个工作表对象。
Print (new _ worksheet,new _ workbook,new _ worksheet.name) #有空时整理工作表对象的方法。工作表可以是。名字
-结果:-
Xlwt。工作表。位于0x02a18cb0xlwt的工作表对象。工作簿。位于0x02a18af0的工作簿对象魔术风云变化列表4。复制后直接修改文件内容:导入xlrd
导入xlwt
从xlutils.copy导入副本
#打开要更改的excel文件
old _ excel=xlrd . open _ workbook( mcw _ test . xlsx ,formatting_info=True)
#将操作文件对象复制到可写工作簿对象中。
new_excel=copy(old_excel)
#获取第一个工作表的对象
ws=new_excel.get_sheet(0)
#写入数据
Ws.write(0,0,“第一行,第一列”)
Ws.write(0,1,“第一行,第二列”)
Ws.write(0,2,“第一行,第三列”)
Ws.write(1,0,“第二行,第一列”)
Ws.write(1,1,“第二行,第二列”)
Ws.write(1,2,“第二行,第三列”)
#另存为excel文件并命名该文件,可以重命名或覆盖。
new _ excel . save( new _ mcw _ test . xlsx )
5.实际应用1)(表格功能1:改变)读取单元格索引和修改单元格两个功能。
导入xlrd
从xlutils.copy导入副本
fpath=mcw_test.xlsx
Mname=小果吹雪
Mtitle=爱好
Modifycontent= sleep
def recindex(path,mname,mtitile):
找到单元格并返回单元格的行和列索引,供modify_cell函数使用。
:参数路径:Excel文件路径
:param mname:要修改的名称。
:param mtitile:要修改的标题。
:return:单元格的行和列索引号。Rindex:行,cindex:列索引
workbook=xlrd.open_workbook(路径)
data _ sheet=workbook . sheets()[0]
row1=Data_sheet.row_values(0)
DIC _ col _ s={ str(I):row 1[I]for I in range(0,len(row1))}
col 2=datasheet . col _ values(1)
DIC _ row _ s={ str(I):col 2[I]for I in range(0,len(col2))}
rindex=“”。join([I for I in DIC _ row _ s if DIC _ row _ s[I]==mname])
cindex=“”。join([I for I in DIC _ col _ s if DIC _ col _ s[I]==m title])
rindex=int()。join(list(rindex)))
cindex=int()。join(list(cindex)))
返回rindex,cindex
def modify_cell(path,rindex,cindex,modifycontent):
修改文件中指定单元格的内容,通过recindex函数的返回值得到rindex和cindex的参数。
:param path:要修改的Excel文件的路径。
:param rindex:recindex返回元组的第一个元素,即行索引。
:param cindex:recindex返回元组的第二个元素,即列索引。
:param modifycontent:要修改的单元格的新内容。
:返回:
old _ excel=xlrd . open _ workbook(path,formatting_info=True)
new_excel=copy(old_excel)
ws=new_excel.get_sheet(0)
ws.write(rindex,cindex,modifycontent)
new_excel.save(路径)
val=recindex(fpath,mname,mtitle)
Modify _ cell (fpath,val [0],val [1],修改内容)2)(表函数2: increase)将多行数据追加到工作表中。
导入xlrd
从xlutils.copy导入副本
fpath=mcw_test.xlsx
value=[ 3 ,亮如明月,女,听歌, 2030年7月1日],
[4 ,志刚志强,男,学习, 2019.07.01],]
def write_excel_xls_append(路径,值):
Index=len(value) #获取要写入数据的行数。
workbook=xlrd . Open _ workbook(path)#打开工作簿
Sheets=workbook.sheet_names() #获取工作簿中的所有表格
worksheet=workbook . sheet _ by _ name(sheets[0])#获取工作簿中所有表格的第一个表格。
Rows_old=worksheet.nrows #获取表格中现有数据的行数。
New_workbook=copy(workbook) #将xlrd对象的副本转换为xlwt对象
new _ worksheet=new _ workbook . Get _ sheet(0)#获取转换后的工作簿中的第一个表格
对于范围内的I(0,索引):
对于范围(0,len(value[i])中的j:
New _ worksheet.write (i rows_old,j,value [I] [j]) #追加数据,注意数据是从i rows_old行写入的。
New_workbook.save(path) #保存工作簿
Print(xls/xlsx格式表[append]成功写入数据!)
write_excel_xls_append(fpath,valueli)
3)(表功能3: Check 1)显示文件每行内容,每列用制表符分隔。
导入xlrd
fpath=mcw_test.xlsx
def read_excel_xls(路径):
workbook=xlrd . Open _ workbook(path)#打开工作簿
Sheets=workbook.sheet_names() #获取工作簿中的所有表格
worksheet=workbook . sheet _ by _ name(sheets[0])#获取工作簿中所有表格的第一个表格。
对于范围内的I(0,worksheet.nrows):
对于范围内的j(0,worksheet.ncols):
打印(工作表。cell _ value (I,J), \ t ,end=) #逐行读取数据和列#分隔符和空格实现其点
打印()
读取excel xls(fpath)
-结果:-
姓名,性别,爱好,毕业时间
2.0小马过河男子跑2017.07.01
5.0小果吹雪人沉睡2016年7月1日
1.0樱花堕胎少女2018 . 7 . 1吃饭
3明月当空,听歌,2030年7月1日
4志刚志强,男学2019 . 7 . 14)(表格功能4: Check 2)以列表的形式显示文件的每一行。
导入xlrd
fpath=mcw_test.xlsx
def read_excel_xls(路径):
打印所有行的内容,每行显示为一个列表。
:param path:要查看的Excel文件的路径。
workbook=xlrd . Open _ workbook(path)#打开工作簿
Sheets=workbook.sheet_names() #获取工作簿中的所有表格
worksheet=workbook . sheet _ by _ name(sheets[0])#获取工作簿中所有表格的第一个表格。
rows=worksheet.row_values(0)
对于范围内的I(0,worksheet.nrows):
Rows=worksheet.row_values(i) #逐行逐列读取数据#分隔符和空格实现其点。
打印(行)
读取excel xls(fpath)
-结果:-
[id ,姓名,性别,爱好,毕业时间]
[2.0,小马过河,男,跑步, 2017 . 07 . 01 ]
[5.0,小果吹雪,男,睡觉, 2016 . 07 . 01 ]
[1.0,樱花堕胎,女性,吃, 2018 . 07 . 01 ]
[3 ,亮如明月,女,听歌, 2030.07.01]
[4 ,志刚志强,男,学习, 2019.07.01]5)(表单功能5:构建)创建新表单,写入数据。
导入xlwt
Fpath=修仙学院的人xlsx . xlsx
Sheet_name=小马过河工作表
Valueli=[[id ,姓名,性别,爱好,毕业时间],
[3 ,明如明月,女,听歌, 2030年07月01日],
[4 ,志刚志强,男,学习, 2019.07.01],]
def write_excel_xls(路径,工作表名称,值):
Index=len(value) #获取要写入数据的行数。
Workbook=xlwt。Workbook() #创建新工作簿
sheet=workbook . add _ sheet(sheet _ name)#在工作簿中创建新表格
对于范围内的I(0,索引):
对于范围(0,len(value[i])中的j:
Sheet.write(i,j,value[i][j]) #像表格一样写数据(对应的行和列)
Workbook.save(path) #保存工作簿
Print(xls/xlsx格式表成功写入数据!)
write_excel_xls(fpath,sheet_name,valueli)
期待陌生,拥抱惊喜。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。