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发送form-data请求及拼接form-data内容的方法
Mar 05 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
python进行TCP端口扫描的实现
Dec 21 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
django做form表单的数据验证过程详解
Jul 26 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
Python拼接字符串的7种方式详解
Mar 19 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
Python datetime 如何处理时区信息
Sep 02 Python
python神经网络编程之手写数字识别
May 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
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
php文档更新介绍
2011/07/22 PHP
php中{}大括号是什么意思
2013/12/01 PHP
php 邮件发送问题解决
2014/03/22 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
Python 如何对文件目录操作
2020/07/10 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
护士自我评价
2014/02/01 职场文书
高中课程设置方案
2014/05/28 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
小学生校园广播稿
2014/09/28 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
盗窃案辩护词
2015/05/21 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript