用python批量处理Excel表格,处理结果又快又好,做办公室最靓的那个仔
使用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_nameelse: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 = filenameelse: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_nameself.sheet_id = sheet_idelse:self.file_name = '菜鸟小白.xlsx'self.sheet_id = 0self.data = self.get_data()def get_data(self):"""读取表格数据:return: 返回读取的表格数据"""data = xlrd.open_workbook(self.file_name)tables = data.sheets()[self.sheet_id]return tablesdef get_lines(self):"""读取表格总行数:return: 返回表格总行数"""tables = self.datareturn tables.nrowsdef get_cols(self):"""读取表格总行数:return: 返回表格总列数"""tables = self.datareturn tables.ncolsdef 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表格,处理结果又快又好,做办公室最靓的那个仔的更多相关文章
- Python批量修改Excel中的文件内容
import osimport xlrdfrom xlutils.copy import copydef base_dir(filename=None): return os.path.join ...
- Python Module_openpyxl_处理Excel表格
目录 目录 前言 软件系统 Install openpyxl module Sample code load_workbook加载Excel文件 wbObjectget_sheet_names 获取E ...
- 详解python操作生成excel表格,并且填充数据
最近在研究python操作excel表格的问题,首先读取excel表格觉得平时用的多,不怎么有难度,就是pyhon生成excel表格的时候,平时不怎么用,所以重点研究了一下,现总结如下: 1.首先用到 ...
- python批量处理excel文件数据
https://www.zhihu.com/question/39299070?sort=created 作者:水中柳影链接:https://www.zhihu.com/question/392990 ...
- python数据写入Excel表格
from openpyxl import Workbook def main(): sheet_name = "表名1" row_count = 6 # 行数 info_resul ...
- python之处理excel表格
xlrd xlrd是python中一个第三方的用于读取excle表格的模块,很多企业在没有使用计算机管理前大多使用表格来管理数据,所以导入表格还是非常常用的! 安装xlrd pip install ...
- 用Python xlwt建立excel表格
1.下载xlwt的Python库 (This is a library for developers to use to generate spreadsheet files compatible w ...
- Python快速设置Excel表格边框
import xlwings as xw #打开存好的excel app = xw.App() #设置应用 wb = xw.Book("E:/Data/小蜜蜂超市销售报表.xlsx" ...
- Python 处理 CSV/EXCEL 表格文件
只想说,数据挖掘工作,80%时间都花在处理数据上了,这句话真不假! 最近和小伙伴组了个队参加数据分析比赛,记录下我处理 csv 文件的一些步骤吧: 修改csv文件 可以用csv模块1,官方文档2 im ...
随机推荐
- 科学计算:Python 分析数据找问题,并图形化
对于记录的数据,如何用 Python 进行分析.或图形化呢? 本文将介绍 numpy, matplotlib, pandas, scipy 几个包,进行数据分析.与图形化. 准备环境 Python 环 ...
- phpmyadmin通过慢查询日志getshell连载(二)
这是phpmyadmin系列渗透思路的第二篇文章,前面一篇文章阐述了通过全局日志getshell,但是还有一个日志可以getshell,那就是本次实验的慢查询日志,操作类似,毕竟实战中多一条路就多一次 ...
- PHP丨PHP基础知识之条件语SWITCH判断「理论篇」
Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择.以PHP来说,switch(开关语句)常和case break default一起使用 典型结构 switch($control ...
- 【Java思考】Java 中的实参与形参之间的传递到底是值传递还是引用传递呢?
科普: 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 引用传递(pass by reference)是指在 ...
- 《Java核心技术》笔记:第7章 异常、断言和日志
1. 异常 (P 280)异常处理需要考虑的问题: 用户输入错误 设备错误 物理限制 代码错误 (P 280)传统的处理错误的方法是:返回一个特殊的错误码,常见的是返回-1或者null引用 (P 28 ...
- 黑马程序员spring data jpa 2019年第一版本
第一步首先创建一个maven工程,导入对于的pom依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- java scoket Blocking 阻塞IO socket通信三
在NIO同步非阻塞的场景中和原来同步阻塞最大的却别就是引入了上面的Buffer对象,现在我们来学校上面的BUffer对象 我们来看看程序的代码: package bhz.nio.test; impor ...
- vue安装及创建项目的几种方式
原文地址:https://www.wjcms.net/archives/vue安装及创建项目的几种方式 VUE安装的方式 直接用 script标签 引入 对于制作原型或学习,你可以这样使用最新版本: ...
- ExecutorsService 中的 submit和 execute的区别
闲来无事,写点代码练练手.于是就看了下ExecutorService常用的提交任务的方法: <T> Future<T> submit(Callable<T> tas ...
- (三)ansible playbook
一,YAML语法 YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标量等数据结构.(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对) YAML文件扩展名通常为.yaml ...