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切片用法实例教程
Sep 08 Python
python循环监控远程端口的方法
Mar 14 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
python如何生成网页验证码
Jul 28 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
详解python的四种内置数据结构
Mar 19 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 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
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php浏览历史记录的方法
2015/03/10 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
Bootstrap插件全集
2016/07/18 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
深入理解javascript中的this
2021/02/08 Javascript
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
20个常用Python运维库和模块
2018/02/12 Python
python设置环境变量的原因和方法
2019/06/24 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
如何获得EntityManager
2014/02/09 面试题
程序员跳槽必看面试题总结
2013/06/28 面试题
学生拾金不昧表扬信
2014/01/21 职场文书
七夕情人节促销方案
2014/06/07 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
如何解决.cuda()加载用时很长的问题
2021/05/24 Python