当前位置: 移动技术网 > IT编程>脚本编程>Python > python处理Excel文件(学习两个操作工具)

python处理Excel文件(学习两个操作工具)

2020年07月14日  | 移动技术网IT编程  | 我要评论
python处理excel大数据的读和写欢迎使用Markdown编辑器python在excel文件处理的过程中担任什么角色功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 M

python在excel文件处理的过程中担任什么角色

没有接触过编程的同学多多少少会对程序代码有点畏惧感,既然excel表格那么好用,鼠标点点,键盘敲敲就可以啦,那为什么还要用python对它进行操作呢。

随着大数据时代的来临,除了办公会用到excel表格外,涉及到大数据工程的项目上需要对大量数据进行处理,这就难免会涉及到很多数据的重复性工作。python能够很便捷地对表格进行大量数据的处理,将重复性工作代码化,运行一段代码就可以避免很多重复性工作。

怎么去理解python语言

python是一种面向对象的语言。

电视机遥控器就是一个对象(可以把对象理解为一个实实在在的东西),遥控器上面的按钮就对应着不同的功能,比如换台,关电视等等,这里被操作的是电视。

同样,用python可以写出很多工具对象,这个工具对象有很多功能,在这里被操作的是表格。

我们可以利用python可以写出很多的工具对象,不同的工具控制着不同的东西,这里我们主要讲控制表格的工具。

我用python写好的两个简单的工具对象(不用掌握代码细节,学会使用这两个工具就好)

下面是我写好的两个工具对象(不用看完整代码,记住class后面的名字以及def后面的名字就好)

在这里插入图片描述

这段代码制作了两个工具(出现了两个class,一个class就对应一个工具对象),一个是用来读Excel数据的,一个是用来把数据写入Excel的。每次操作表格之前,拷贝到编译器即可.

class后面的名称**ExcelData()softwareOfwriteToExcel()**是我们在用这个工具一定会用到的,需要用哪个工具就调用哪个。

读工具的使用

  1. 对表格进行操作之前需要把读和写的工具总体代码拷贝到编译器内(照样子拷贝就行,不要看完整代码,记住上面的图片内的工具名称以及功能名称即可)。
from xlrd import xldate_as_tuple
import xlrd
import xlwt
import datetime




'''***************************'''
class ExcelData():    #提取有效行数和列数,提取整行数据
    # 初始化方法
    def __init__(self, data_path, sheetname):
        #定义一个属性接收文件路径
        self.data_path = data_path
        # 定义一个属性接收工作表名称
        self.sheetname = sheetname
        # 使用xlrd模块打开excel表读取数据
        self.data = xlrd.open_workbook(self.data_path)
        # 根据工作表的名称获取工作表中的内容(方式①)
        self.table = self.data.sheet_by_name(self.sheetname)
        # 根据工作表的索引获取工作表的内容(方式②)
        #self.table = self.data.sheet_by_name(0)
        # 获取第一行所有内容,如果括号中1就是第二行,这点跟列表索引类似
        self.keys = self.table.row_values(0)
        # 获取工作表的有效行数
        self.rowNum = self.table.nrows
        # 获取工作表的有效列数
        self.colNum = self.table.ncols

    # 定义一个读取excel表的方法
    def readExcel(self):
        # 定义一个空列表
        datas = []
        for i in range(1, self.rowNum):
            # 定义一个空字典
            sheet_data = {}
            for j in range(self.colNum):
                # 获取单元格数据类型
                c_type = self.table.cell(i,j).ctype
                # 获取单元格数据
                c_cell = self.table.cell_value(i, j)
                if c_type == 2 and c_cell % 1 == 0:  # 如果是整形
                    c_cell = int(c_cell)
                elif c_type == 3:
                    # 转成datetime对象
                    date = datetime.datetime(*xldate_as_tuple(c_cell,0))
                    c_cell = date.strftime('%Y/%d/%m %H:%M:%S')
                elif c_type == 4:
                    c_cell = True if c_cell == 1 else False
                sheet_data[self.keys[j]] = c_cell
                # 循环每一个有效的单元格,将字段与值对应存储到字典中
                # 字典的key就是excel表中每列第一行的字段
                # sheet_data[self.keys[j]] = self.table.row_values(i)[j]
            # 再将字典追加到列表中
            datas.append(sheet_data)
        # 返回从excel中获取到的数据:以列表存字典的形式返回
        return datas
    #定义一个获取行内容的方法,输入行数
    def getRow(self,num):
        rowContent = self.table.row_values(num-1)
        return rowContent
    #定义一个获取列内容的方法,输入列数
    def getCol(self,num):
        colContent = self.table.col_values(num-1)
        return colContent


'''************************************************'''
class softwareOfwriteToExcel():
    def __init__(self,name_of_excel,name_of_sheet):
        self.name_of_excel = name_of_excel
        self.name_of_sheet = name_of_sheet
        self.w = xlwt.Workbook()  # 创建一个工作簿
        self.ws = self.w.add_sheet(self.name_of_sheet)  # 创建一个工作表
    def writeToExcel(self,row,col,content):
        self.ws.write(row-1,col-1,content)
        self.w.save(self.name_of_excel)
    def writeToROW(self,rowNum,list):
        num = 1
        for i in list:
            self.ws.write(rowNum-1,num-1,i)
            num += 1
            self.w.save(self.name_of_excel)
    def writeToCol(self,colNum,list):
        num = 1
        for i in list:
            self.ws.write(num-1,colNum-1,i)
            num += 1
            self.w.save(self.name_of_excel)
  1. 现在,我们已经获取了两个工具,接下来取一个工具对象并取名字为read_tool
#不用刻意理解,每次都这么写
read_tool = ExcelData('/Users/jerry/Desktop/example.xlsx','Sheet3')

这里我们往读工具内传入了两个参数,一个是/Users/jerry/Desktop/example.xlsx,这个是被操作表格的绝对路径,另外一个是表格内被操作表单的名称,运行这一行代码我们就获取到了表格内的数据,并存放在了read_tool里,接下来要读表格内的数据其实就是对read_tool进行操作。
3 . 获取下面表格的第1行数据并打印出来
在这里插入图片描述
遥控器使用功能的方法是按键,python工具对象使用功能的方法是** .+功能名字 **,由以上简图可知,获取行内容的功能名称为getRow,所以调用的方法就是read_tool.getRow(1),1为行号

print(read_tool.getRow(1))

运行结果为
在这里插入图片描述
4. 以此类推,获取第1列的数据,调用的方法为read_tool.getCol(1),若要打印结果则使用

print(read_tool.getCol(1))

运行结果为
在这里插入图片描述

写工具的使用

  1. 和读工具的使用一样,先导入两个工具
from xlrd import xldate_as_tuple
import xlrd
import xlwt
import datetime




'''***************************'''
class ExcelData():    #提取有效行数和列数,提取整行数据
    # 初始化方法
    def __init__(self, data_path, sheetname):
        #定义一个属性接收文件路径
        self.data_path = data_path
        # 定义一个属性接收工作表名称
        self.sheetname = sheetname
        # 使用xlrd模块打开excel表读取数据
        self.data = xlrd.open_workbook(self.data_path)
        # 根据工作表的名称获取工作表中的内容(方式①)
        self.table = self.data.sheet_by_name(self.sheetname)
        # 根据工作表的索引获取工作表的内容(方式②)
        #self.table = self.data.sheet_by_name(0)
        # 获取第一行所有内容,如果括号中1就是第二行,这点跟列表索引类似
        self.keys = self.table.row_values(0)
        # 获取工作表的有效行数
        self.rowNum = self.table.nrows
        # 获取工作表的有效列数
        self.colNum = self.table.ncols

    # 定义一个读取excel表的方法
    def readExcel(self):
        # 定义一个空列表
        datas = []
        for i in range(1, self.rowNum):
            # 定义一个空字典
            sheet_data = {}
            for j in range(self.colNum):
                # 获取单元格数据类型
                c_type = self.table.cell(i,j).ctype
                # 获取单元格数据
                c_cell = self.table.cell_value(i, j)
                if c_type == 2 and c_cell % 1 == 0:  # 如果是整形
                    c_cell = int(c_cell)
                elif c_type == 3:
                    # 转成datetime对象
                    date = datetime.datetime(*xldate_as_tuple(c_cell,0))
                    c_cell = date.strftime('%Y/%d/%m %H:%M:%S')
                elif c_type == 4:
                    c_cell = True if c_cell == 1 else False
                sheet_data[self.keys[j]] = c_cell
                # 循环每一个有效的单元格,将字段与值对应存储到字典中
                # 字典的key就是excel表中每列第一行的字段
                # sheet_data[self.keys[j]] = self.table.row_values(i)[j]
            # 再将字典追加到列表中
            datas.append(sheet_data)
        # 返回从excel中获取到的数据:以列表存字典的形式返回
        return datas
    #定义一个获取行内容的方法,输入行数
    def getRow(self,num):
        rowContent = self.table.row_values(num-1)
        return rowContent
    #定义一个获取列内容的方法,输入列数
    def getCol(self,num):
        colContent = self.table.col_values(num-1)
        return colContent


'''************************************************'''
class softwareOfwriteToExcel():
    def __init__(self,name_of_excel,name_of_sheet):
        self.name_of_excel = name_of_excel
        self.name_of_sheet = name_of_sheet
        self.w = xlwt.Workbook()  # 创建一个工作簿
        self.ws = self.w.add_sheet(self.name_of_sheet)  # 创建一个工作表
    def writeToExcel(self,row,col,content):
        self.ws.write(row-1,col-1,content)
        self.w.save(self.name_of_excel)
    def writeToROW(self,rowNum,list):
        num = 1
        for i in list:
            self.ws.write(rowNum-1,num-1,i)
            num += 1
            self.w.save(self.name_of_excel)
    def writeToCol(self,colNum,list):
        num = 1
        for i in list:
            self.ws.write(num-1,colNum-1,i)
            num += 1
            self.w.save(self.name_of_excel)
  1. 取一个写工具并取名为write_tool
write_tool = softwareOfwriteToExcel('demo.xls','mysheet')

这句代码就制作好了一个空表格demo.xls,并打开了一个新表单mysheet,对这个新表格操作就是对write_tool进行操作
根据上面的简图和读操作,写工具下有三个主用功能

  • 往一个单元格写数据writeToExcel()
  • 往规定行写数据writeToROW()
  • 往规定列写数据writeToCol()
  1. 往表格第一行第二列写一个字母haha
softwareOfwriteToExcel.writeToExcel(1,2,'haha')
#第一个参数填入行数,第二个参数填入列数,最后一个参数填入要写入单元格的内容

运行结果:
在这里插入图片描述
工程文件夹内生成一个名为demo.xls的文件,打开表格可以看到第一样第二列出现了haha字符串
在这里插入图片描述

  1. 第8行写入列表[1,2,3,4,5,6,“djd”]
list = [1,2,3,4,5,6,"djd"]
#第一个参数为行数,第二个参数为需要写入的内容
softwareOfwriteToExcel.writeToRow(8,list)

运行结果:
在这里插入图片描述
5. 第9列写入列表[1,2,3,4,5,6,“djd”,“djdj”,“djdjdj”]

list = [1,2,3,4,5,6,"djd","djdj","djdjdj"]
#第一个参数填入列数,第二个参数写入内容列表
softwareOfwriteToExcel.writeToCol(9,list)

运行结果:
在这里插入图片描述

总结

以上代码模块将常用的读和写的功能都涵盖进来了,工具的具体代码不用看更不用记。需要对表格操作时:

  1. 将工具拷贝到编译器
  2. 给工具取一个名字,就像read_tool和write_tool,然后所有的操作都围绕着两个对象进行操作
  3. 使用某个功能就(.+功能名称),然后按照要求写入参数就好,如用到读工具的读第1行:
read_tool.getRow(1)

写工具依此类推

本文地址:https://blog.csdn.net/weixin_43580807/article/details/107298276

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网