Python讀取xls(包括讀取日期類型)


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()

運行截圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM