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异常处理慎用“except:pass”建议
Apr 02 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
python构建深度神经网络(续)
Mar 10 Python
python3个性签名设计实现代码
Jun 19 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
python字符串下标与切片及使用方法
Feb 13 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
详解ES6中的let命令
2020/04/05 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
详解python polyscope库的安装和例程
2020/11/13 Python
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
库房保管员岗位职责
2014/04/07 职场文书
银行求职信
2014/05/31 职场文书
一份文言文检讨书
2014/09/13 职场文书
年度考核个人总结
2015/03/06 职场文书
创业计划书之家政服务
2019/09/18 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
基于Python实现一个春节倒计时脚本
2022/01/22 Python