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实现的石头剪子布代码分享
Aug 22 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
Python paramiko模块的使用示例
Apr 11 Python
python机器学习之神经网络实现
Oct 13 Python
使用numba对Python运算加速的方法
Oct 15 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
用Flash图形化数据(二)
2006/10/09 PHP
PHP 引用是个坏习惯
2010/03/12 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
python下载微信公众号相关文章
2019/02/26 Python
简单了解python代码优化小技巧
2019/07/08 Python
python中bytes和str类型的区别
2019/10/21 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
基于Python实现粒子滤波效果
2020/12/01 Python
python实现视频压缩功能
2020/12/18 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
作文评语集锦大全
2014/04/23 职场文书
勇敢的心观后感
2015/06/09 职场文书
Python 文字识别
2022/05/11 Python