import xlrd
from xlrd import xldate_as_tuple
from IPScriptUtil import *
from serverTest import *
import re
import datetime
'''
xlrd中单元格的数据类型
数字一律按浮点型输出,日期输出成一串小数,布尔型输出0或1,所以我们必须在程序中做判断处理转换
成我们想要的数据类型
0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
'''
class ExcelData():
# 初始化方法
def __init__(self, data_path, sheetname):
#定义一个属性接收文件路径
self.data_path = data_path
# 定义一个属性接收工作表名称
self.sheetname = sheetname
# 使用xlrd模块打开excel表读取数据
self.data = xlrd.open_workbook(self.data_path)
# 根据工作表的名称获取工作表中的内容(方式①)
self.table = self.data.sheet_by_name(self.sheetname)
# 根据工作表的索引获取工作表的内容(方式②)
# self.table = self.data.sheet_by_name(0)
# 获取第一行所有内容,如果括号中1就是第二行,这点跟列表索引类似
#self.keys = self.table.row_values(1)
self.keys =["ip","deploy_unit"]
# 获取工作表的有效行数
self.rowNum = self.table.nrows
# 获取工作表的有效列数
self.colNum = self.table.ncols

# 定义一个读取excel表的方法
def readExcel(self):
# 定义一个空列表
datas = []
for i in range(0, self.rowNum):
# 定义一个空字典
sheet_data = {}
for j in range(self.colNum):
# 获取单元格数据类型
c_type = self.table.cell(i,j).ctype
# 获取单元格数据
c_cell = self.table.cell_value(i, j)
if c_type == 2 and c_cell % 1 == 0: # 如果是整形
c_cell = int(c_cell)
elif c_type == 3:
# 转成datetime对象
date = datetime.datetime(*xldate_as_tuple(c_cell,0))
c_cell = date.strftime('%Y/%m/%d %H:%M:%S')
elif c_type == 4:
c_cell = True if c_cell == 1 else False
sheet_data[self.keys[j]] = c_cell
# 循环每一个有效的单元格,将字段与值对应存储到字典中
# 字典的key就是excel表中每列第一行的字段
# sheet_data[self.keys[j]] = self.table.row_values(i)[j]
# 再将字典追加到列表中
datas.append(sheet_data)
# 返回从excel中获取到的数据:以列表存字典的形式返回
return datas
def convertPort(self,port):
try:
int(port)
except Exception: # not a valid port
return False
return True

if __name__ == "__main__":
data_path = "D:/虚拟机列表信息.xls"
sheetname = "Sheet1"
get_data = ExcelData(data_path, sheetname)
datas = get_data.readExcel()
print(len(datas))
if len(datas) >=1:
for index in range(len(datas)):
print(datas[index].get("ip")+datas[index].get("deploy_unit"))

最新文章

  1. (转)Android 系统 root 破解原理分析
  2. ssh增加密匙登录
  3. java多线程学习-开篇
  4. [每天一道A+B]签到检测程序
  5. cocos2d-x lua 实现单例(管理类)
  6. POJ 3393 Lucky and Good Months by Gregorian Calendar 模拟题
  7. ArrayList线程不安全?
  8. jQuery无限级联下拉框插件
  9. Git托管
  10. Be the Winner
  11. H5页面转成图片并下载到本地
  12. CSS中盒模型的理解
  13. (五)qt资源文件
  14. WPF 窗口
  15. 该问题是需要导包!!!需要pom中添加依赖The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
  16. 【Hbase学习之一】Hbase 简介
  17. ALGO-18_蓝桥杯_算法训练_单词接龙(搜索)
  18. 基于JMX动态配置Log4J日志级别
  19. 关于的 recorder robotium 的Eclipse插件(URL:http://recorder.robotium.com/updates/或者说不可用)
  20. B. Fafa and the Gates

热门文章

  1. [python] ​python-pinyin库
  2. Nacos详解
  3. DVWA靶场实战(六)——Insecure CAPTCHA
  4. MySQL性能优化浅析及线上案例
  5. Ubuntu 安装 office
  6. 你想成为.Net 7的技术高手吗?来这里看看
  7. Loadrunner的函数收集
  8. 阿里百秀后台管理项目笔记 ---- Day02
  9. MySQL-知识点补充
  10. P25_wxss - rpx单位