使用python批量处理Excel数据

  •     让你根据Excel上所有人的身份证号码,提取出公司员工的生日

  • 让你每个月都将公司所有人的考勤数据整理一下

类似这样的格式化的重复操作,你还在每次都使用的人工去逐条查询处理么?下次再遇到这种情况,请一定不要再傻傻地每次都手动查询处理。可以快速整理出一个python脚本来批量处理Excel数据,周期性处理的数据更是一了百了哦。

首先我们需要安装一个xlrd和xlwt的python,其中xlrd是用来读取Excel表格数据,xlwt是用来写Excel表格数据的。具体python安装可以参考python学习三——库安装。

xlrd

首先我们学习一下Excel表格读写库——xlrd

  • 打开excel文件并获取所有sheet

import xlrd# 打开Excel文件读取数据data = xlrd.open_workbook('联系人.xls')sheet_name = data.sheet_names()  # 获取所有sheet名称print(sheet_name) # ['sheet1', 'sheet2']
  • 根据sheet索引或者名称获取sheet内容,同时获取sheet名称、行数、列数

# 根据sheet索引或者名称获取sheet内容,同时获取sheet名称、列数、行数sheet2 = data.sheet_by_index(1)print('sheet2名称:{}\nsheet2列数: {}\nsheet2行数: {}'.format(sheet2.name, sheet2.ncols, sheet2.nrows))# sheet2名称:sheet2# sheet2列数: 7# sheet2行数: 5
  • 获取指定单元格的内容

# 获取指定单元格的内容print(sheet1.cell(1,0).value)  # 第2 行1列内容:机构名称print(sheet1.cell_value(1,0))  # 第2 行1列内容:机构名称print(sheet1.row(1)[0].value)  # 第2 行1列内容:机构名称

xlwt

接下来我们我们在看看xlwt,其实两个库的使用方法都是差不多的。具体代码如下:

import  xlwt#创建一个Excel对象write_book = xlwt.Workbook()#在对象中添加一个sheet1表write_sheet = xlwt.Workbook.add_sheet(write_book,sheetname='cainiaoxiaobai')#在第二行第三列的单元格插入数据(默认从0开始计数)write_sheet.write(1,2,"菜鸟小白的学习分享")#保存Excel对象为test.xlswrite_book.save(filename_or_stream='test.xls')

运行产生的Excel表格如下

看到这你是不是以为就结束了,当然不会大家更加方便的完成表格处理,我这边将常见的模块,直接进行调用就能够满足常用的Excel表格数据的批量处理。

#   _*_coding=utf-8_*_import xlwtimport xlrdclass WriteExcel:    def __init__(self, sheet_name=None):        """初始化写表格对象        :param sheet_name: 写表格的sheet名,默认为cainiaoxiaobai        """        if sheet_name:            self.sheetname = sheet_name        else:            self.sheetname = "cainiaoxiaobai"        self.workbook = xlwt.Workbook()        self.worksheet = self.workbook.add_sheet(sheetname=self.sheetname)    def write_values(self, row, col, values):        """向目标sheet的某个行列写入值        :param row: 目标行        :param col: 目标列        :param values: 想要写入的值        """        self.worksheet.write(row, col, values)    def save_file(self, filename=None):        """保存表格        :param filename: 保存的文件名        """        if filename:            self.filename = filename        else:            self.filename = "菜鸟小白的学习分享.xls"        self.workbook.save(self.filename)class OpenExcel:    def __init__(self, file_name=None, sheet_id=None):        """初始化读取Excel表格        :param file_name: 需要读取的表格名        :param sheet_id: 需要读取的表格sheet        """        if file_name:            self.file_name = file_name            self.sheet_id = sheet_id        else:            self.file_name = '菜鸟小白.xlsx'            self.sheet_id = 0        self.data = self.get_data()    def get_data(self):        """读取表格数据        :return: 返回读取的表格数据        """        data = xlrd.open_workbook(self.file_name)        tables = data.sheets()[self.sheet_id]        return tables    def get_lines(self):        """读取表格总行数        :return: 返回表格总行数        """        tables = self.data        return tables.nrows    def get_cols(self):        """读取表格总行数        :return: 返回表格总列数        """        tables = self.data        return tables.ncols    def get_value(self, row, col):        """读取表格中具体的行、列对应的值        :param row: 目标行        :param col: 目标列        :return: 返回目标行、列的值        """        return self.data.cell_value(row, col)

这个模块支持的功能和参数作用直接见程序批注。使用方法就只需新建一个主程序进行调用就好了。

import ReadAndWriteExcelopenexcel = ReadAndWriteExcel.OpenExcel(file_name="菜鸟小白.xls",sheet_id=0)write_excel = ReadAndWriteExcel.WriteExcel()for i in range(1,openexcel.get_lines()):    #将目标表格的姓名拷贝在整理的表格中    write_excel.write_values(i, 0, openexcel.get_value(i,0))    #将身份证号码中的生日提取出来    birthday = openexcel.get_value(i,1)[6:13]    #将生日写入到目标表格中    write_excel.write_values(i,1,birthday)write_excel.save_file(filename="菜鸟小白的学习分享.xls")

实现效果如下:

后面你们在遇到需要反复批量处理Excel表格的事情,就直接使用这个模块,自己建一个数据处理的主程序,一次搞定后面所有的重复工作。是不是非常地简单呢?

用python批量处理Excel表格,处理结果又快又好,做办公室最靓的那个仔的更多相关文章

  1. Python批量修改Excel中的文件内容

    import osimport xlrdfrom xlutils.copy import copydef base_dir(filename=None):    return os.path.join ...

  2. Python Module_openpyxl_处理Excel表格

    目录 目录 前言 软件系统 Install openpyxl module Sample code load_workbook加载Excel文件 wbObjectget_sheet_names 获取E ...

  3. 详解python操作生成excel表格,并且填充数据

    最近在研究python操作excel表格的问题,首先读取excel表格觉得平时用的多,不怎么有难度,就是pyhon生成excel表格的时候,平时不怎么用,所以重点研究了一下,现总结如下: 1.首先用到 ...

  4. python批量处理excel文件数据

    https://www.zhihu.com/question/39299070?sort=created 作者:水中柳影链接:https://www.zhihu.com/question/392990 ...

  5. python数据写入Excel表格

    from openpyxl import Workbook def main(): sheet_name = "表名1" row_count = 6 # 行数 info_resul ...

  6. python之处理excel表格

    xlrd ​ xlrd是python中一个第三方的用于读取excle表格的模块,很多企业在没有使用计算机管理前大多使用表格来管理数据,所以导入表格还是非常常用的! 安装xlrd pip install ...

  7. 用Python xlwt建立excel表格

    1.下载xlwt的Python库 (This is a library for developers to use to generate spreadsheet files compatible w ...

  8. Python快速设置Excel表格边框

    import xlwings as xw #打开存好的excel app = xw.App() #设置应用 wb = xw.Book("E:/Data/小蜜蜂超市销售报表.xlsx" ...

  9. Python 处理 CSV/EXCEL 表格文件

    只想说,数据挖掘工作,80%时间都花在处理数据上了,这句话真不假! 最近和小伙伴组了个队参加数据分析比赛,记录下我处理 csv 文件的一些步骤吧: 修改csv文件 可以用csv模块1,官方文档2 im ...

随机推荐

  1. update语句基本用法

    UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=;

  2. python_lesson2 多进程探索 (multiprocessing包)

    进程池 进程池 (Process Pool)可以创建多个进程.这些进程就像是随时待命的士兵,准备执行任务(程序).一个进程池中可以容纳多个待命的士兵.       import multiproces ...

  3. C++ Primer Plus(四)

    完整阅读C++ Primer Plus 系统重新学习C++语言部分,记录重要但易被忽略的,关键但易被遗忘的. 友元.异常和其他 1.抛出异常类时,虽然catch的是一个引用,但是也会产生一次拷贝,因为 ...

  4. python+opencv实现图像自适应阈值的均衡化

    内容涉及:列表遍历,图像均衡化,图像通道分离与合并 import cv2 import numpy as np import os for path in open("org_junheng ...

  5. 如何在项目开发中应用好“Deadline 是第一生产力”?

    我想也许你早就听说过"Deadline是第一生产力"这句话,哪怕以前没听说过,我相信看完本文后,再也不会忘记这句话,甚至时不时还要感慨一句:"Deadline是第一生产力 ...

  6. WTL中GDI+支持资源文件加载

    WTL中GDI+支持资源文件加载 分类: WTL WTL gdi+ gdi+2013-04-22 17:16 78人阅读 评论(0) 收藏 举报 WTLGDI+c++ 今天遇到一个小问题困扰了.就是G ...

  7. SQL语句中where 1=1的意义

    我们在看别人项目的时候,很多时候看到这样的SQL语句: select * from user where 1=1 其中这个where1=1是有特殊意义的,包含以下两种情境:动态SQL拼接和查询表结构. ...

  8. Excel表格中第一个输入的零不显示怎么办?

    Excel表格是办公的人经常要用到的软件,经常用它来统计和记录各种数据,但是有时候表格中第一个数字是零的时候,经常第一个零输入时不显示的,这个情况我们怎么解决呢?这里小编跟大家讲一下希望能帮助大家. ...

  9. 【总结-前台发送后台接收表单】MVC提交表单的四种方式

    https://www.cnblogs.com/chenwolong/p/Form.html#commentform 后台控制器接收前台表单参数三种方法: 一.普通参数 HTML标签name 和参数名 ...

  10. LeetCode64. 最小路径和

    这题和62题以及63题类似,只不过dp数组的状态表示变了,这里dp数组不再表示方案数,而是到当前格子的最小路径和.可以发现:要到达第i行第j列的格子,只有从第i - 1行第j列的格子或第i行第j - ...