python excel操作(xlrd xlwr xlutils)

xlrd 读取excel:

1.安装xlrd:pip install xlrd

2.导入模块:import xlrd

3.打开Excel文件读取数据

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

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

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

5.获取表名称

name = table.name

6.获取行数和列数

nrows = table.nrows
nclos = table.ncols

7.获取某行和某列的值

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

8.循环 行/列 的数据

for i in range(nrows):
    print(table.row_values(i))

for j in range(nclol):
    print(table.col_values(j))

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

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

 

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

#coding:utf-8
import xlrd

class OperationExcel:
    def __init__(self,file_name=None,sheet_id=None):
        if file_name:
            self.file_name = file_name
            self.sheet_id = sheet_id
        else:
            self.file_name = '../dataconfig/interface.xlsx'
            self.sheet_id = 0
        self.data = self.get_data()

    #获取sheets的内容
    def get_data(self):
        data = xlrd.open_workbook(self.file_name)
        tables = data.sheets()[self.sheet_id]
        return  tables

    #获取单元格的行数
    def get_lines(self):
        tables = self.data
        return tables.nrows

    #获取某一个单元格的内容
    def get_cell_value(self,row,col):
        tables = self.data
        cell = tables.cell_value(row,col)
        return cell

if __name__ == '__main__':
    opexcel = OperationExcel()
    print(opexcel.get_cell_value(1,2))

xlwt 生成excel:

1.安装下载:pip install xlwt

2.导入:import xlwt

3.参考:

3.1 生成excel文件test1.xls

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

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

file_name = '../dataconfig/test1.xls'
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('My_Worksheet')
sheet.write(0,1,'ok')
sheet.write(0,1,'hhok')
wbk.save(file_name)
#报错:
#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.示例:

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

4.excel修改流程如图

python excel操作(xlrd xlwr xlutils)_第1张图片

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

原文:

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

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

你可能感兴趣的:(python)