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中的字符串知识点
Apr 14 Python
深入理解Python对Json的解析
Feb 14 Python
Python 中Pickle库的使用详解
Feb 24 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
python与字符编码问题
May 24 Python
python获取Pandas列名的几种方法
Aug 07 Python
python3中numpy函数tile的用法详解
Dec 04 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
python程序文件扩展名知识点详解
Feb 27 Python
python实现人像动漫化的示例代码
May 17 Python
Python如何爬取qq音乐歌词到本地
Jun 01 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基础学习小结
2011/04/17 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
PHP7引入的"??"和"?:"的区别讲解
2019/04/08 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
Python 多进程和数据传递的理解
2017/10/09 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python 实现敏感词过滤的方法
2019/01/21 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
keras.layer.input()用法说明
2020/06/16 Python
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
会议邀请书范文
2014/02/02 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
校本课程教学计划
2015/01/19 职场文书
党员理论学习心得体会
2016/01/21 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python