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 相关文章推荐
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
Python单元测试框架unittest简明使用实例
Apr 13 Python
python获取当前日期和时间的方法
Apr 30 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
Feb 05 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python调用摄像头显示图像的实例
Aug 03 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
python日期相关操作实例小结
Jun 24 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
php文件操作实例代码
2012/05/10 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
javascript常用方法总结
2015/05/14 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
vue的基本用法与常见指令
2017/08/15 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
Python脚本处理空格的方法
2016/08/08 Python
python实现Zabbix-API监控
2018/09/17 Python
Python面向对象程序设计示例小结
2019/01/30 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
武汉东之林科技有限公司机试
2013/09/17 面试题
毕业生求职自荐信怎么写
2014/01/08 职场文书
销售求职信范文
2014/05/26 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
导游词之西安大清真寺
2019/12/17 职场文书