from xlutils.copy import copy,python xlutils

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: