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的Django框架中更新数据库数据的方法
Jul 17 Python
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
python实现在函数图像上添加文字和标注的方法
Jul 08 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
python super()函数的基本使用
Sep 10 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
python安装mysql的依赖包mysql-python操作
Jan 01 Python
python可视化大屏库big_screen示例详解
Nov 23 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中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
php构造函数的继承方法
2015/02/09 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
js解决movebox移动问题
2016/03/29 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
用Python抢过年的火车票附源码
2015/12/07 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python 动态调用函数实例解析
2019/10/21 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
html5 标签
2009/07/16 HTML / CSS
维也纳通行证:Vienna PASS
2019/07/18 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
元旦红领巾广播稿
2014/02/19 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
个人租房协议书
2014/04/09 职场文书
物流专业自荐信
2014/05/23 职场文书
博士生求职信
2014/07/06 职场文书
认真学习保证书
2015/02/26 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL