使用xlrd讀取出來的時間欄位是類似41410.5083333的浮點數,在使用時需要轉換成對應的datetime型別,下面**是轉換的方法:
首先需要引入xldate_as_tuple函式:
from xlrd import xldate_as_tuple
#d是從excel中讀取出來的浮點數
xldate_as_tuple(d,0)
xldate_as_tuple第二個引數有兩種取值,0或者1,0是以1900-01-01為基準的日期,而1是1904-01-01為基準的日期。該函式返回的是乙個元組,他的值類似:(year, month, day, hour, minute, nearest_second)
例子:excel中e2單元格值為2018/05/27
from xlrd import xldate_as_tuple
result = xldate_as_tuple(ws['e2'].value,0)
print(result) # 結果(2018, 5, 27, 0, 0, 0)
from xlrd import xldate_as_tuple
result = xldate_as_tuple(ws.cell(row=2,column=5).value,0)
print(result) # 結果(2018, 5, 27, 0, 0, 0)
注意:該例子沒有對第一行的資料進行處理。第一行資料作為key,其它行作為value,依次返回每行資料。
import xlrd
from datetime import datetime
from xlrd import xldate_as_tuple
def get_excel_data(file): # 傳入檔案路徑字串即可,例如:get_excel_data('account.xlsx')
workbook = xlrd.open_workbook(file)
sheet = workbook.sheets()[0] # 讀取第乙個sheet
nrows = sheet.nrows # 行數
first_row_values = sheet.row_values(0) # 第一行資料
list =
num = 1
for row_num in range(1, nrows):
row_values = sheet.row_values(row_num)
if row_values:
str_obj = {}
for i in range(len(first_row_values)):
ctype = sheet.cell(num, i).ctype
cell = sheet.cell_value(num, i)
if ctype == 2 and cell % 1 == 0.0: # ctype為2且為浮點
cell = int(cell) # 浮點轉成整型
cell = str(cell) # 轉成整型後再轉成字串,如果想要整型就去掉該行
# 這個代表**中是日期型別
elif 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[first_row_values[i]] = cell
num = num + 1
return list
---------------------
原文:
Python xlrd模組讀取xls檔案
import sys from xlrd import open workbook xlrd用於讀取xld workbook open workbook 記錄人員資訊.xls 開啟xls檔案 sheet name workbook.sheet names 列印所有sheet名稱,是個列表 sheet...
Python xlrd模組讀取Excel表中的資料
1 xlrd庫的安裝 直接使用pip工具進行安裝 當然也可以使用pycharmide進行安裝,這裡就不詳述了 2 xlrd模組的一些常用命令 開啟excel檔案並建立物件儲存 data xlrd.open workbook 檔案路徑 獲取檔案中所有工作表的名稱 data.sheet names 根據...
Python xlrd模組讀取Excel表中的資料
1 xlrd庫的安裝 直接使用pip工具進行安裝 當然也可以使用pycharmide進行安裝,這裡就不詳述了 2 xlrd模組的一些常用命令 開啟excel檔案並建立物件儲存 data xlrd.open workbook 檔案路徑 獲取檔案中所有工作表的名稱 data.sheet names 根據...