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生成器的使用方法
Nov 21 Python
python处理PHP数组文本文件实例
Sep 18 Python
用Python实现随机森林算法的示例
Aug 24 Python
Python3 操作符重载方法示例
Nov 23 Python
Numpy掩码式数组详解
Apr 17 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
python 日期排序的实例代码
Jul 11 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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 数据同步
2006/10/09 PHP
详细介绍PHP应用提速面面观
2006/10/09 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
React实现todolist功能
2020/12/28 Javascript
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
python实现烟花小程序
2019/01/30 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
大学四年个人自我小结
2014/03/05 职场文书
跳蚤市场口号
2014/06/13 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
《称赞》教学反思
2016/02/17 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers