欢迎点击上方"AntDream"关注我

、Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况。这里做一个Python处理Excel数据的总结,基本受用大部分情况。相信以后用Python处理Excel数据不再是难事儿!Python处理Excel数据需要用到2个库:xlwt 和 xlrd。xlwt库负责将数据导入生成Excel表格文件,而 xlrd库则负责将Excel表格中的数据取出来。

xlwt库将数据导入Excel

将数据写入一个Excel文件wb = xlwt.Workbook()

# 添加一个表

ws = wb.add_sheet('test')

# 3个参数分别为行号,列号,和内容

# 需要注意的是行号和列号都是从0开始的

ws.write(0, 0, '第1列')

ws.write(0, 1, '第2列')

ws.write(0, 2, '第3列')

# 保存excel文件

wb.save('./test.xls')

可以看到,用xlwt库操作非常简单,基本就三步走:打开一个Workbook对象,并用add_sheet方法添加一个表

然后就是用write方法写入数据

最后用save方法保存需要注意的是,xlwt库里面所定义的行和列都是从0开始计数的

定制Excel表格样式

表格样式一般主要有这么几块内容:字体、对齐方式、边框、背景色、宽度以及特殊内容,比如超链接、日期时间等。下面我们来分别看看用xlwt库怎么定制这些样式。

字体

xlwt库支持的字体属性也比较多,大概如下:

字体属性

设置字体需要用到xlwt库的XFStyle类和Font类,代码模版如下:style = xlwt.XFStyle()

# 设置字体

font = xlwt.Font()

# 比如设置字体加粗和下划线

font.bold = True

font.underline = True

style.font = font

# 然后应用

ws.write(2, 1, 'test', style)

后续几个属性的设置都是类似的,都是4步走:拿到XFStyle

拿到对应需要的属性,比如这里的Font对象

设置具体的属性值

最后就是在write方法写入数据的时候应用就行

单元格对齐

先来看单元格对齐怎么设置# 单元格对齐

alignment = xlwt.Alignment()

# 水平对齐方式和垂直对齐方式

alignment.horz = xlwt.Alignment.HORZ_CENTER

alignment.vert = xlwt.Alignment.VERT_CENTER

# 自动换行

alignment.wrap = 1

style.alignment = alignment

# 然后应用

ws.write(2, 1, 'test', style)上面这个自动换行的属性还是蛮有用的,因为我们很多时候数据会比较长,最好再加上单元格的宽度属性一起使用,这样整体样式会好很多

单元格宽度设置:# 设置单元格宽度,也就是某一列的宽度

ws.col(0).width = 6666

单元格的背景色

背景色对应的属性是 Pattern# 背景色

pattern = xlwt.Pattern()

pattern.pattern = xlwt.Pattern.SOLID_PATTERN

# 背景色为黄色

# 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta,

# 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow ,

# almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray

# ...

pattern.pattern_fore_colour = 5

style.pattern = pattern

# 然后应用

ws.write(2, 1, 'test', style)

单元格边框

边框属性是Borders

单元格边框就2类:颜色和边框线样式

可以分别设置上下左右边框的颜色和样式# 边框

borders = xlwt.Borders()

# 边框可以分别设置top、bottom、left、right

# 每个边框又可以分别设置颜色和线样式:实线、虚线、无

# 颜色设置,其他类似

borders.left_colour = 0x40

# 设置虚线,其他类似

borders.bottom = xlwt.Borders.DASHED

style.borders = borders

# 然后应用

ws.write(2, 1, 'test', style)

特殊内容,比如超链接和公式

特殊内容一般主要会碰到这几类:超链接、公式和时间日期

处理这些特殊内容需要用到Formula# 超链接

link = 'HYPERLINK("http://www.baidu.com";"Baidu")'

formula = xlwt.Formula(link)

ws.write(2, 0, formula)

# 公式也是类似

ws.write(1, 1, xlwt.Formula('SUM(A1,B1)'))

# 时间

style.num_format_str = 'M/D/YY'

ws.write(2, 1, datetime.datetime.now(), style)

以上就是用Python将数据写入到Excel的全部内容了,下面我们再来看看怎么读取Excel中的数据做处理。

xlrd库读取Excel中的数据

读取Excel文件

同样的用xlrd库读取Excel的数据也是轻轻松松,先来看下实现代码# 先打开一个文件

wb = xlrd.open_workbook(file_path)

# 获取第一个表

sheet1 = wb.sheet_by_index(0)

# 总行数

nrows = sheet1.nrows

# 总列数

ncols = sheet1.ncols

# 后面就通过循环即可遍历数据了

# 取数据

for i in range(nrows):

for j in range(ncols):

# cell_value方法取出第i行j列的数据

value = sheet1.cell_value(i, j)

print(value)

总结一下,分为一下几步:首先通过xlrd库的open_workbook方法打开Excel文件

然后通过sheet_by_index方法获取表

然后分别获取表的行数和列数,便于后面循环遍历

根据列数和行数,循环遍历,通过cell_value方法获取每个单元格中的数据

工作表的相关操作

获取一个工作表,有多种方式# 通过索引

sheet1 = wb.sheets()[0]

sheet1 = wb.sheet_by_index(0)

# 通过名字

sheet1 = wb.sheet_by_name('test')

# 获取所有表名

# sheet_names = wb.sheet_names()

获取某一行或某一列的所有数据# 获取行中所有数据,返回结果是一个列表

tabs = sheet1.row_values(rowx=0, start_colx=0, end_colx=None)

# 返回一行一共有多少数据

len_value = sheet1.row_len(rowx=0)

row_values的三个参数分别是:行号、开始的列和结束的列,其中结束的列为None表示获取从开始列到最后的所有数据

类似的还有获取某一列的数据cols = sheet1.col_values(colx=0, start_rowx=0, end_rowx=None)

处理时间数据

时间数据比较特殊,没发直接通过上面的cell_value方法获取。需要先转换为时间戳,然后再格式化成我们想要的格式。

比如要获取Excel表格中,格式为2019/8/13 20:46:35的时间数据# 获取时间

time_value = sheet1.cell_value(3, 0)

# 获取时间戳

time_stamp = int(xlrd.xldate.xldate_as_datetime(time_value, 0).timestamp())

print(time_stamp)

# 格式化日期

time_rel = time.strftime("%Y/%m/%d", time.localtime(time_stamp))

print(time_rel)

基本也是三步走:通过cell_value方法获取时间值

然后通过xldate_as_datetime方法获取时间戳

然后格式化一下

总结

Excel文件是用Python处理数据时常会碰到的一类场景,有了xlwt 和 xlrd的帮助可以非常快速的导入和导出Excel数据。大家可以把这篇文章收藏起来,以后碰到处理Excel文件的时候可以参考一下。

码字不易,求转发,求点在看,求关注,感谢!

python导入excel数据-Python数据处理之导入导出excel数据相关推荐

  1. easy-excel 导入数据校验 不正确则导出excel并提示错误信息

    需求 : 导入excel 校验第二列 数据格式 不正确则导出excel并提示错误信息 导入图: 预期效果: 引入依赖 <dependency><groupId>com.alib ...

  2. springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

    springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...

  3. springmvc使用easypoi导出导入Excel表(1):导出Excel表

    编译工具:eclipse 项目:maven+ssm springmvc使用easypoi导出导入Excel表(2):导入Excel表 在pom.xml引入easypoi的依赖包: <!--eas ...

  4. python 导出数据并发邮件_Python自动化导出zabbix数据并发邮件脚本

    Zabbix没有报表导出的功能,于是通过编写脚本导出zabbix数据并发邮件.效果如下: 下面是脚本,可根据自己的具体情况修改: #!/usr/bin/python` `#coding:utf-8` ...

  5. 填充数据合并单元格并导出excel代码实现

    以下代码是动态填充数据,这些数据是从数据库取得的批量的,并合并单元格,最终导出excel.但是有一点需要注意,一定是先填充数据在合并单元格,而且每个单元格的样式都是提前设置好的 . 举个例子:合并单元 ...

  6. java 导出excel 大数据量 报错_java导出excel

    上面导出PDF和EXCEL的问题是图片路径出错!!! 数据库中存存的图片路径是"../dishpic/722f464f-3883-42aa-901f-21706da9c582.png&quo ...

  7. mysql 条件查询 导出数据_mysql按查询条件导出指定数据方法

    本文章介绍了用mysql into outfile命令来导入指定表中指定数据的方法. 按条件导出mysql表的数据: 代码如下 theyestoday=`date -d "-1 day&qu ...

  8. java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...

    excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办 如果打开文件的格式与文件的扩展名不一致,只要能够打开就不用去管他. java导出excel,excel打不开,报文件格式无效,怎么解决 ...

  9. excel php 数字科学计数_PHP导出excel时数字变为科学计数的解决方法

    在数据导出到excel时数字格式不对,一般分为以下两种情况. 1.excel单元格设置长度不够 解决方法: $objActSheet = $objPHPExcel->getActiveSheet ...

  10. vue导出excel加一个进度条_vue导出excel遇到的问题解决方法

    本篇文章给大家带来的内容是关于vue导出excel遇到的问题解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 需求: Vue+element UI el-table下的导出当前 ...

最新文章

  1. nyoj 10 skiing(DAG上的最长路,备忘录方法)
  2. asp多表查询并显示_零公式实现多表数据查找!3步设置,简单高效!3分钟学会,真香...
  3. 打开高效文本编辑之门_Linux awk之自定义变量与操作符
  4. CSDN开播工具-嘉宾端使用说明
  5. H3C Navigate 2017 | 拉近世界的距离 新华三的泛联接版图
  6. 男人要明白的22件事
  7. JNI系列(2):jstring操作
  8. 窥探源码,让我更加优雅的使用Kafka生产者!
  9. 修复Windows10系统的注册表?
  10. Java精品项目第33期前台展示+后台管理结合的在线购书系统
  11. 高数:第三章(同济大学第七版)
  12. uploadify onSelect
  13. 基于 smart-config技术实现
  14. Windows10关闭自动更新
  15. tempfile.mkstemp 详解
  16. vue实现刷新页面,页面回到顶部
  17. EXFO max-715b光纤测试仪参数介绍
  18. FastDFS V6.06 阿里云集群安装配置双IP(踩坑)
  19. 炼石白小勇:合规与实战推动密码产业发展
  20. 彩虹登录聚合中转API程序网站源码「免授权」

热门文章

  1. [BZOJ4556][TJOI2016HEOI2016]字符串(二分答案+后缀数组+RMQ+主席树)
  2. Entity相互关系
  3. IDEA中Spring Boot+MyBaits提示Invalid bound statement (not found)错误
  4. special-symbols in package(data.table)
  5. svn的merge使用例子
  6. 016--VS2013 C++ 透明动画
  7. python数字类型-Python数字类型及其操作
  8. python好用-Python里三个好用的调试神器
  9. 如何系统的自学python 知乎-如何系统地自学Python?
  10. python入门需要多久-怎么自学python,大概要多久?