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 内置字符串处理函数的使用方法
Jun 11 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
Python中表示字符串的三种方法
Sep 06 Python
Python编程之Re模块下的函数介绍
Oct 28 Python
python操作excel的方法
Aug 16 Python
解决python opencv无法显示图片的问题
Oct 28 Python
Python实现Selenium自动化Page模式
Jul 14 Python
python3调用windows dos命令的例子
Aug 14 Python
python conda操作方法
Sep 11 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
基于Python模拟浏览器发送http请求
Nov 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保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
PHP 正则表达式小结
2015/02/12 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
PHP 无限级分类
2017/05/04 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
python实现xml转json文件的示例代码
2020/12/30 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
澳大利亚网上书店:QBD
2021/01/09 全球购物
给女儿的表扬信
2014/01/18 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
教师继续教育反思周记
2015/06/25 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书