安裝
pip install xlrd
pip install xlwt
pip install xlutils
導入
import xlrd import xlwt import xlutils
讀取excel
# ----讀取excel---- data= xlrd.open_workbook(excel_file)
讀取sheet
# ----讀取sheet---- # 通過索引順序獲取sheet table = data.sheets()[0] # 通過索引順序獲取sheet table = data.sheet_by_index(0)) # 通過名稱獲取sheet table = data.sheet_by_name("sheet") # 返回book中所有sheet的名字 names = data.sheet_names() # 傳入索引或sheet名檢查某個sheet是否導入完畢 table.sheet_loaded("sheet") table.sheet_loaded(0) # sheet名 table.name # sheet列數 table.ncols # sheet行數 table.nrows
讀取sheet的行
# 返回由rowx行中所有的單元格對象組成的列表 table.row(rowx) # 獲取rowx行第一個單元格的類型 # 0. empty(空的),1 string(text), 2 number, 3 date, 4 boolean, 5 error, 6 blank(空白表格) table.row(rowx)[0].ctype # 獲取rowx行第一個單元格的值 table.row(rowx)[0].value # 返回由rowx行中所有的單元格對象組成的列表 table.row_slice(self, rowx, start_colx=0, end_colx=None) # 返回由rowx行中所有單元格的數據類型組成的列表 table.row_types(rowx, start_colx=0, end_colx=None) # 返回由rowx行中所有單元格的數據組成的列表 table.row_values(rowx, start_colx=0, end_colx=None) # 返回rowx行的有效單元格長度 table.row_len(rowx)
讀取sheet的列
#返回colx列中所有的單元格對象組成的列表 table.col(colx, start_rowx=0, end_rowx=None) #返回colx列中所有的單元格對象組成的列表 table.col_slice(colx, start_rowx=0, end_rowx=None) #返回colx列中所有單元格的數據類型組成的列表 table.col_types(colx, start_rowx=0, end_rowx=None) #返回colx列中所有單元格的數據組成的列表 table.col_values(colx, start_rowx=0, end_rowx=None)
讀取sheet的單元格
# 返回單元格對象 cell = table.cell(rowx,colx) # 單元格數據類型 # 0. empty(空的),1 string(text), 2 number, 3 date, 4 boolean, 5 error, 6 blank(空白表格) cell.ctype # 單元格值 cell.value # 返回單元格中的數據類型 table.cell_type(rowx,colx) # 返回單元格中的數據 table.cell_value(rowx,colx) # 暫時還沒有搞懂 table.cell_xf_index(rowx, colx)
寫入excel
# 使用xlutils將xlrd讀取的對象轉為xlwt可操作對象,table即上述xlrd讀取的table workbook = xlutils.copy(table) # 或者如果你只是想創建一張空表 workbook = xlwt.Workbook(encoding = 'utf-8') # 創建一個sheet worksheet = workbook.add_sheet('sheet') # 獲取一個已存在的sheet worksheet = workbook.get_sheet('sheet') # 寫入一個值,括號內分別為行數、列數、內容 worksheet.write(row, column, "memeda") workbook.save('memeda.xls')
帶樣式寫入示例
workbook = xlwt.Workbook(encoding = 'utf-8') style = xlwt.XFStyle() font = xlwt.Font() # 創建字體 font.name = 'Arial' font.bold = True # 黑體 font.underline = True # 下划線 font.italic = True # 斜體字 font.colour_index = 2 # 顏色為紅色 style.font = font worksheet.write(row, column, "memeda", style) workbook.save('memeda.xls')
輸出多種顏色字體
import xlwt workbook = xlwt.Workbook(encoding='utf-8') def get_style(i): style = xlwt.XFStyle() font = xlwt.Font() # 創建字體 font.colour_index = i style.font = font return style sheet = workbook.add_sheet("memeda") for i in range(0, 100): sheet.write(i, 0, "memeda", get_style(i)) workbook.save('memeda.xls')
import xlrd import os file = os.getcwd()+'\\pp.xls' def read_excel(): wb = xlrd.open_workbook(filename=file)#打開文件 # 通過碎銀獲取sheel table = wb.sheets()[0] print(table) table = wb.sheets()[1] print(table) # 通過索引順序獲取sheet table = wb.sheet_by_index(0) print(table.name) print(table.ncols) print(table.read) print(table) table = wb.sheet_by_index(1) print(table) # 通過名稱獲取sheet table = wb.sheet_by_name("Sheet1") print(table) table = wb.sheet_by_name("Sheet2") print(table.name) # 返回book中所有sheet的名字 table = wb.sheet_names() print(table) # 傳入索引或sheet名檢查某個sheet是否導入完畢 ta = wb.sheet_loaded("Sheet1") print(ta) ta = wb.sheet_loaded(0) print(ta) table = wb.sheet_by_index(0) rowx = 0 # 返回由rowx行中所有的單元格對象組成的列表 print(table.row(rowx)) # 獲取rowx行第一個單元格的類型 # 0. empty(空的),1 string(text), 2 number, 3 date, 4 boolean, 5 error, 6 blank(空白表格) print(table.row(rowx)[0].ctype) # 獲取rowx行第一個單元格的值 print(table.row(rowx)[0].value) # 返回由rowx行中所有的單元格對象組成的列表 print(table.row_slice(rowx, start_colx=0, end_colx=None)) # 返回由rowx行中所有單元格的數據類型組成的列表 print(table.row_types(rowx, start_colx=0, end_colx=None)) # 返回由rowx行中所有單元格的數據組成的列表 print(table.row_values(rowx, start_colx=0, end_colx=None)) # 返回rowx行的有效單元格長度 print(table.row_len(rowx)) # 返回colx列中所有的單元格對象組成的列表 colx = 0 print(table.col(colx, start_rowx=0, end_rowx=None)) # 返回colx列中所有的單元格對象組成的列表 print(table.col_slice(colx, start_rowx=0, end_rowx=None)) # 返回colx列中所有單元格的數據類型組成的列表 print(table.col_types(colx, start_rowx=0, end_rowx=None)) # 返回colx列中所有單元格的數據組成的列表 print(table.col_values(colx, start_rowx=0, end_rowx=None)) # 讀取sheet的單元格 # 返回單元格對象 print(table.cell(rowx, colx)) # 單元格數據類型 # 0. empty(空的),1 string(text), 2 number, 3 date, 4 boolean, 5 error, 6 blank(空白表格) print(table.cell(rowx, colx).ctype) # 返回單元格中的數據類型 print(table.cell_type(rowx, colx)) # 返回單元格中的數據 print(int(table.cell_value(rowx+5, colx+4))) # 返回單元格中的數據 if __name__ == '__main__': read_excel()