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 相关文章推荐
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
python实现转圈打印矩阵
Mar 02 Python
如何更优雅地写python代码
Jul 02 Python
wxPython实现分隔窗口
Nov 19 Python
Python 生成VOC格式的标签实例
Mar 10 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
python 实现两个线程交替执行
May 02 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 Python
一文搞懂Python Sklearn库使用
Aug 23 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
全文搜索和替换
2006/10/09 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
python 下划线的不同用法
2020/10/24 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
《狐假虎威》教学反思
2014/02/07 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
投诉信范文
2015/07/02 职场文书
我的中国梦主题班会
2015/08/14 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库