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 相关文章推荐
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
Python计算一个文件里字数的方法
Jun 15 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
Dec 19 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
python-视频分帧&多帧合成视频实例
Dec 10 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
如何基于matlab相机标定导出xml文件
Nov 02 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的简易冒泡法代码分享
2012/08/28 PHP
处理单名多值表单的详解
2013/06/08 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
python实现用户答题功能
2018/01/17 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
Python如何根据时间序列数据作图
2020/05/12 Python
Python里面如何拷贝一个对象
2014/02/17 面试题
测绘工程个人的自我评价
2013/11/10 职场文书
2014升学宴答谢词
2014/01/26 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
小学运动会通讯稿
2015/07/18 职场文书
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
千万级用户系统SQL调优实战分享
2022/03/03 MySQL
PHP 时间处理类Carbon
2022/05/20 PHP