Step1:import xlrd 或者取terminal中: pip install xlrd == 1.2.0
一定要记得是1.2.0的版本,或者后面会报错。如果,出现报错:
xlrd.biffh.XLRDError: Excel xlsx file; not supported
就是因为xlrd的版本是2.0以上的,可以去: 进行修改版本。
(这里要吐槽一下,为什么版本升级的时候,会出现这样低级的错误,这不是倒退升级吗?)
Step2:导入数据
这里需要注意: 1. 使用的是 ’ ’ 单引号进行包裹路径 2. 路径分隔符是 \ 双斜杠
Step3:读取行列数据
sheet1 = data.sheet_by_name("Sheet1")
print("行数:", sheet1.nrows, "列数:", sheet1.ncols)
first_row_values = sheet1.row_values(1)
first_col_values = sheet1.col_values(0)
附完整代码
import numpy as np
from datetime import datetime
import xlrd
from xlrd import xldate_as_tuple
def readExcelData(filePath, sheetName, startReadRow, endReadRow, startReadCol, endReadCol):
"""
param filePath: 文件路径
param sheetName: 所读取文件中的表格名字
param startReadRow: 从多少行开始阅读,注意是从0开始哟,例如:wps中的第4行,这里要换成从第3行
param endReadRow: 结束读取的行,如结束读取的行在WPS中显示 43,则这里的 endReadRow = 42
param startReadCol: 从多少行开始读取
param endReadCol: 从多少行结束读取
return: 表格中的数据,为数组类型,可以直接通过 dataArr[0,:]取行列数据
"""
workbook = xlrd.open_workbook(filePath)
sheet = workbook.sheet_by_name(sheetName)
first_row_values = sheet.row_values(1)
dataArr = []
num = startReadRow
for row_num in range(num, endReadRow + 1):
row_values = sheet.row_values(row_num)
if row_values:
str_obj = []
for i in range(startReadCol, endReadCol+1):
ctype = sheet.cell(num, i).ctype
cell = sheet.cell_value(num, i)
if ctype == 3:
date = datetime(*xldate_as_tuple(cell, 0))
cell = date.strftime('%Y/%m/%d %H:%M:%S')
elif ctype == 4:
cell = True if cell == 1 else False
str_obj.append(cell)
dataArr.append(str_obj)
num = num + 1
return np.array(dataArr)
|