博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python处理Excel文件
阅读量:4677 次
发布时间:2019-06-09

本文共 1524 字,大约阅读时间需要 5 分钟。

 因为工作需求,需要审核一部分query内容是否有效,query储存在Excel中,文本内容为页面的Title,而页面的URL以HyperLink的格式关联到每个Cell。

于是本能的想到用Python读取Excel文件之后进行文本分析,之后对每个链接进行一次HttpRequest,通过分析HttpResponse的内容来判断当前链接是否有效。

于是上网搜了下,发现比较主流的是用xlrd的插件,但是实际使用过程中发现,无论如何,最终获取的hyperlink_map值一直都是None,也没空去分析到底是为什么。最后经过搜索发现一个叫xlwings的Python库,可以有效使用。

具体的代码如下:

# -*- coding=utf-8 -*-import xlwings as xwimport urllibimport systype = 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 datawb = 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.rowcolnum = 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)

 

转载于:https://www.cnblogs.com/chrischeng/p/7050027.html

你可能感兴趣的文章
代码优化程序性能
查看>>
腾讯实习生招聘笔试题目
查看>>
Java Socket编程----通信是这样炼成的
查看>>
作业要求 20180925-1 每周例行报告
查看>>
1078. Hashing (25)-PAT甲级真题
查看>>
SQLite中的运算符表达式
查看>>
Grid使用 & ComboBox Binding & DateTime Format WPF
查看>>
.Net Core迁移到MSBuild的多平台编译问题
查看>>
数据结构之删除线性表中的元素
查看>>
redis安装配置
查看>>
结对项目博客
查看>>
讨论记录:求大于一个时间段的最大平均积分,O(n)时间实现
查看>>
error) DENIED Redis is running in protected mode because protected mode is enabled报错
查看>>
CSS-16-margin值重叠问题
查看>>
selenium常用方法
查看>>
第二次作业
查看>>
ios 面试题
查看>>
express细节点注意
查看>>
MySQL教程(二)—— 关于在ACCESS中使用SQL语句
查看>>
实验4.1
查看>>