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的id()函数解密过程
Dec 25 Python
python标准日志模块logging的使用方法
Nov 01 Python
Python 文件读写操作实例详解
Mar 12 Python
浅谈Python中列表生成式和生成器的区别
Aug 03 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
pyshp创建shp点文件的方法
Dec 31 Python
python第三方库学习笔记
Feb 07 Python
Python sep参数使用方法详解
Feb 12 Python
导致python中import错误的原因是什么
Jul 01 Python
使用Python获取字典键对应值的方法
Apr 26 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单例模式实现方法分析
2015/03/14 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
javascript中创建对象的三种常用方法
2010/12/30 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python 基础教程之包和类的用法
2017/02/23 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
Django REST framework视图的用法
2019/01/16 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
公证委托书大全
2014/04/04 职场文书
公司外出活动方案
2014/08/14 职场文书
贪污检举信范文
2015/03/02 职场文书
活动主持人开场白
2015/05/28 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js