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 从远程服务器下载日志文件的程序
Feb 10 Python
python双向链表实现实例代码
Nov 21 Python
详解Python中的strftime()方法的使用
May 22 Python
Python引用传值概念与用法实例小结
Oct 07 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
tensorflow求导和梯度计算实例
Jan 23 Python
python pandas利用fillna方法实现部分自动填充功能
Mar 16 Python
keras中的History对象用法
Jun 19 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
如何让python的运行速度得到提升
Jul 08 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
mysql 字段类型说明
2007/04/27 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
用Python生成器实现微线程编程的教程
2015/04/13 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
酒店保安领班职务说明书
2014/03/04 职场文书
四议两公开实施方案
2014/03/28 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
表扬稿范文
2015/01/17 职场文书
公司租车协议书
2015/01/29 职场文书
劳动模范获奖感言
2015/07/31 职场文书