1、按行讀取xls
xls文件為兩個表格,內容都是一樣的
# -*- encoding=utf-8 -*- import os import xlrd filename = os.path.abspath('readxls.xls') book = xlrd.open_workbook(filename) sheets = book.sheets() print(sheets) # 所有的表對象 names = book.sheet_names() print(names) # 所有的表名 sheet1 = book.sheet_by_index(0) column_rows = sheet1.nrows # 行數 print('行數:{}'.format(column_rows)) column_number = sheet1.ncols # 列數 print('列數:{}'.format(column_number)) for row in range(column_rows): data = sheet1.row_values(row) # 按行讀取,讀出來是list print(data)
運行截圖
2、按列讀取xls
# -*- encoding=utf-8 -*- import os import xlrd filename = os.path.abspath('readxls.xls') book = xlrd.open_workbook(filename) sheets = book.sheets() print(sheets) # 所有的表對象 names = book.sheet_names() print(names) # 所有的表名 sheet1 = book.sheet_by_index(0) column_rows = sheet1.nrows # 行數 print('行數:{}'.format(column_rows)) column_number = sheet1.ncols # 列數 print('列數:{}'.format(column_number)) for row in range(column_number): data = sheet1.col_values(row) # 按列讀取,讀出來是list print(data)
運行截圖
3、按單元格讀取xls
# -*- encoding=utf-8 -*- import os import xlrd filename = os.path.abspath('readxls.xls') book = xlrd.open_workbook(filename) sheets = book.sheets() print(sheets) # 所有的表對象 names = book.sheet_names() print(names) # 所有的表名 sheet1 = book.sheet_by_index(0) column_rows = sheet1.nrows # 行數 print('行數:{}'.format(column_rows)) column_number = sheet1.ncols # 列數 print('列數:{}'.format(column_number)) for row in range(column_rows): for col in range(column_number): data = sheet1.cell(row, col).value # 按單元格讀取 print(data, '\t', end='') print()
運行截圖
4、讀取日期類型的單元格
修改xls文件中出生年月為日期類型,則讀取出來是float
解決辦法:通過判斷讀取出的類型進行處理
讀取的xls中類型有 5種:
0 代表empty
1代表 string
2代表 number
3代表 date
4 代表boolean
5 代表error
# -*- encoding=utf-8 -*- import os from datetime import datetime import xlrd from xlrd import xldate_as_tuple filename = os.path.abspath('readxls.xls') book = xlrd.open_workbook(filename) sheets = book.sheets() print(sheets) # 所有的表對象 names = book.sheet_names() print(names) # 所有的表名 sheet1 = book.sheet_by_index(0) column_rows = sheet1.nrows # 行數 print('行數:{}'.format(column_rows)) column_number = sheet1.ncols # 列數 print('列數:{}'.format(column_number)) for row in range(column_rows): for col in range(column_number): # 0 代表empty,1代表 string, 2代表 number, 3代表 date, 4 代表boolean, 5 代表error data_type = sheet1.cell(row, col).ctype # print(data_type, '\t', end='') if data_type == 3: value = sheet1.cell(row, col).value data_time = datetime(*xldate_as_tuple(value, 0)) data = data_time.strftime('%Y-%m-%d') else: data = sheet1.cell(row, col).value # 按單元格讀取 print(data, '\t', end='') print()
運行截圖