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的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
Python实现输出某区间范围内全部素数的方法
May 02 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
Django对models里的objects的使用详解
Aug 17 Python
python实现代码统计程序
Sep 19 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
Django静态资源部署404问题解决方案
May 11 Python
Python selenium模块实现定位过程解析
Jul 09 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
python自动化调用百度api解决验证码
Apr 13 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
类似框架的js代码
2006/11/09 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python urlopen()函数 示例分享
2014/06/12 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
python删除特定文件的方法
2015/07/30 Python
Python常用库推荐
2016/12/04 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
python elasticsearch环境搭建详解
2019/09/02 Python
python打包成so文件过程解析
2019/09/28 Python
python实现画出e指数函数的图像
2019/11/21 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
Python同时处理多个异常的方法
2020/07/28 Python
Django admin组件的使用
2020/10/24 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
食品销售计划书
2014/04/26 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
法人代表证明书格式
2014/10/01 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
python实现MD5进行文件去重的示例代码
2021/07/09 Python