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

python处理excel大数据的读和写

    • python在excel文件处理的过程中担任什么角色
    • 怎么去理解python语言
    • 我用python写好的两个简单的工具对象(不用掌握代码细节,学会使用这两个工具就好)
    • 读工具的使用
    • 写工具的使用
    • 总结

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

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

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

怎么去理解python语言

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

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

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

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

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

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

python处理Excel文件(学习两个操作工具)_第1张图片

这段代码制作了两个工具(出现了两个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处理Excel文件(学习两个操作工具)_第2张图片
遥控器使用功能的方法是按键,python工具对象使用功能的方法是** .+功能名字 **,由以上简图可知,获取行内容的功能名称为getRow,所以调用的方法就是read_tool.getRow(1),1为行号

print(read_tool.getRow(1))

运行结果为
python处理Excel文件(学习两个操作工具)_第3张图片
4. 以此类推,获取第1列的数据,调用的方法为read_tool.getCol(1),若要打印结果则使用

print(read_tool.getCol(1))

运行结果为
python处理Excel文件(学习两个操作工具)_第4张图片

写工具的使用

  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')
#第一个参数填入行数,第二个参数填入列数,最后一个参数填入要写入单元格的内容

运行结果:
python处理Excel文件(学习两个操作工具)_第5张图片
工程文件夹内生成一个名为demo.xls的文件,打开表格可以看到第一样第二列出现了haha字符串
python处理Excel文件(学习两个操作工具)_第6张图片

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

运行结果:
python处理Excel文件(学习两个操作工具)_第7张图片
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)

运行结果:
python处理Excel文件(学习两个操作工具)_第8张图片

总结

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

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

写工具依此类推

你可能感兴趣的:(python学习)