当前位置:   article > 正文

python excel操作(xlrd xlwr xlutils)

xlwr

xlrd 读取excel:

1.安装xlrd:pip install xlrd

2.导入模块:import xlrd

3.打开Excel文件读取数据

data = xlrd.open_workbook('../dataconfig/interface.xlsx')

4.获取一个工作表(两种方式都可以)

  1. table = data.sheets()[0] #通过索引顺序获取
  2. table = data.sheet_by_index(0) #通过索引顺序获取

5.获取表名称

name = table.name

6.获取行数和列数

  1. nrows = table.nrows
  2. nclos = table.ncols

7.获取某行和某列的值

  1. row_value= table.row_values(i)
  2. col_value = table.col_values(i)

8.循环 行/列 的数据

  1. for i in range(nrows):
  2. print(table.row_values(i))
  3. for j in range(nclol):
  4. print(table.col_values(j))

9.获取单元格数据(两种方式)

  1. cellvalue = table.cell(row,col).value
  2. cellvalue = table.cell_value(row,col)

 

代码参考:将相关方法进行封装,使用过程可以直接调用:

  1. #coding:utf-8
  2. import xlrd
  3. class OperationExcel:
  4. def __init__(self,file_name=None,sheet_id=None):
  5. if file_name:
  6. self.file_name = file_name
  7. self.sheet_id = sheet_id
  8. else:
  9. self.file_name = '../dataconfig/interface.xlsx'
  10. self.sheet_id = 0
  11. self.data = self.get_data()
  12. #获取sheets的内容
  13. def get_data(self):
  14. data = xlrd.open_workbook(self.file_name)
  15. tables = data.sheets()[self.sheet_id]
  16. return tables
  17. #获取单元格的行数
  18. def get_lines(self):
  19. tables = self.data
  20. return tables.nrows
  21. #获取某一个单元格的内容
  22. def get_cell_value(self,row,col):
  23. tables = self.data
  24. cell = tables.cell_value(row,col)
  25. return cell
  26. if __name__ == '__main__':
  27. opexcel = OperationExcel()
  28. print(opexcel.get_cell_value(1,2))

xlwt 生成excel:

1.安装下载:pip install xlwt

2.导入:import xlwt

3.参考:

3.1 生成excel文件test1.xls

  1. file_name = '../dataconfig/test1.xls'
  2. wbk = xlwt.Workbook() #初始化workbook对象
  3. sheet = wbk.add_sheet('My_Worksheet') #创建表
  4. sheet.write(0,0,'ok') #往单元格写入内容
  5. wbk.save(file_name) #保存

3.2 如果对同一单元多次操作,报错

  1. file_name = '../dataconfig/test1.xls'
  2. wbk = xlwt.Workbook()
  3. sheet = wbk.add_sheet('My_Worksheet')
  4. sheet.write(0,1,'ok')
  5. sheet.write(0,1,'hhok')
  6. wbk.save(file_name)
  7. #报错:
  8. #Exception: Attempt to overwrite cell: sheetname='My_Worksheet' rowx=0 colx=1

3.3 解决方案:

使用cell_overwrite_ok=True来创建worksheet

sheet = wbk.add_sheet('My_Worksheet',cell_overwrite_ok=True)

xlutils 修改excel:

实际场景

需要将执行结果放入特定单元格中或者对特定单元格数据进行修改,

Python中一般使用xlrd(excel read)来读取Excel文件,用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作;

使用xlwt(excel write)来生成Excel文件,xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。

xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能,其实际也只是在xlrd.Book和xlwt.Workbook之间建立了一个管道而已。

1.安装下载:pip install xlutils

2.导入:from xlutils.copy import copy

3.示例:

  1. file_name = '../dataconfig/interface.xls'
  2. rb = xlrd.open_workbook(file_name)
  3. print(type(rb))
  4. wb = copy(rb) #管道作用:利用xlutils.copy函数,将xlrd.Book转为xlwt.Workbook,再用xlwt模块进行存储
  5. print(type(wb))
  6. wb.get_sheet(0).write(1,1,'ok') #通过get_sheet()获取的sheet有write()方法
  7. wb.save(file_name)
  8. 输出结果:
  9. <class 'xlrd.book.Book'>
  10. <class 'xlwt.Workbook.Workbook'>

4.excel修改流程如图

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

原文:

https://www.cnblogs.com/shapeL/p/9075843.html

https://www.cnblogs.com/shapeL/p/9108936.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/355566
推荐阅读
相关标签
  

闽ICP备14008679号