Python处理Excel文件实例代码


Posted in Python onJune 20, 2017

因为工作需求,需要审核一部分query内容是否有效,query储存在Excel中,文本内容为页面的Title,而页面的URL以HyperLink的格式关联到每个Cell。

于是本能的想到用Python读取Excel文件之后进行文本分析,之后对每个链接进行一次HttpRequest,通过分析HttpResponse的内容来判断当前链接是否有效。

于是上网搜了下,发现比较主流的是用xlrd的插件,但是实际使用过程中发现,无论如何,最终获取的hyperlink_map值一直都是None,也没空去分析到底是为什么。最后经过搜索发现一个叫xlwings的Python库,可以有效使用。

xlwings:Python For Excel

具体的代码如下:

# -*- coding=utf-8 -*-
import xlwings as xw
import urllib
import sys

type = sys.getfilesystemencoding() 

def get_html(url):
  page = urllib.urlopen(url)
  html = page.read()
  return unzip(html)

## Debug的时候发现无论怎样做Decode,最后的结果都是乱码
## 后来发现是因为对应的网页做了压缩处理,所以需要对获取的网页内容手动解压缩
def unzip(data):
  import gzip
  import StringIO
  data = StringIO.StringIO(data)
  gz = gzip.GzipFile(fileobj=data)
  data = gz.read()
  gz.close()
  return data

wb = xw.Book(r"C:\Users\hasee\Desktop\Test.xlsx")
main_data = wb.sheets["Sheet2"]
## 通过获取Last Cell来确定当前Sheet的有效行数与列数
rownum = main_data.range('A1').current_region.last_cell.row
colnum = main_data.range('A1').current_region.last_cell.column

## 定位column对应的列
col_dict = {"2":"B","3":"C","4":"D","5":"E","6":"F"}

for row in range(1, rownum + 1):
  for col in range(2, colnum + 1):
    query = main_data.range(row, 1).value
    cell = main_data.range(row, col)
    link = cell.hyperlink
    html = get_html(link)
    if "error-container" in html:
      print "%s,%s,%s,%s" % (query, col_dict.get(str(col))+str(row), cell.value, cell.hyperlink)
      ## 对无效的链接所属的Cell染色,直接写入文件
      cell.color = (253,218,4)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python编写爬虫小程序
May 14 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
Python读取txt某几列绘图的方法
Oct 14 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
Python enumerate函数功能与用法示例
Mar 01 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
Python Pandas 箱线图的实现
Jul 23 Python
python之生产者消费者模型实现详解
Jul 27 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
python中函数返回多个结果的实例方法
Dec 16 Python
python构建自定义回调函数详解
Jun 20 #Python
Python实现完整的事务操作示例
Jun 20 #Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 #Python
Python实现多并发访问网站功能示例
Jun 19 #Python
Python sqlite3事务处理方法实例分析
Jun 19 #Python
Python之str操作方法(详解)
Jun 19 #Python
python urllib爬取百度云连接的实例代码
Jun 19 #Python
You might like
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
jquery获取节点名称
2015/04/26 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
Python程序设计入门(5)类的使用简介
2014/06/16 Python
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
Python实现线程状态监测简单示例
2018/03/28 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python实现动态创建类的方法分析
2019/06/25 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
Python 实现简单的客户端认证
2020/07/29 Python
详解Python 函数参数的拆解
2020/09/02 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
师范生实习个人的自我评价
2013/09/28 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
2014年个人年终总结
2015/03/09 职场文书
升职自荐信范文
2015/03/27 职场文书
具结保证书范本
2015/05/11 职场文书