Zhong__xlrd基本使用
生活随笔
收集整理的這篇文章主要介紹了
Zhong__xlrd基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
時間:2020.12.02
環境:Python3
目的:使用xlrd讀取Excel文件的一般操作
說明:
作者:Zhong QQ交流群:121160124 歡迎加入!
?
安裝xlrd
pip install -i https://pypi.douban.com/simple xlrd準備演示使用的excel文件 demo.xlsx 寫入以下的測試數據
| 1 | 小A | 1 | 2020.12.02 |
| 2 | 小B | 2 | 2020.12.03 |
| 3 | 小C | 3 | 2020.12.04 |
| 4 | 小D | 4 | 2020.12.05 |
| 5 | 小E | 5 | 2020.12.06 |
| 6 | 小F | 6 | 2020.12.07 |
| 7 | 小G | 7 | 2020.12.08 |
| 8 | 小H | 8 | 2020.12.09 |
| 9 | 小I | 9 | 2020.12.10 |
| 10 | 小J | 10 | 2020.12.11 |
| 11 | 小K | 11 | 2020.12.12 |
| 12 | 小L | 12 | 2020.12.13 |
| 13 | 小M | 13 | 2020.12.14 |
| 14 | 小N | 14 | 2020.12.15 |
| 15 | 小O | 15 | 2020.12.16 |
| 16 | 小P | 16 | 2020.12.17 |
| 17 | 小Q | 17 | 12/18/2020 |
| 18 | 小R | 18 | 12/19/2020 |
| 19 | 小S | 19 | 2020年12月20 |
| 20 | 小T | 20 | 2020年12月21日 |
如圖
以上寫入了默認的Sheet表Sheet1表21行4列的數據 第一行為標題行 登記日期寫入的數據有不同的單元格類型? 以下是常用的一些基本操作
import xlrd from xlrd import xldate_as_datetime from pprint import pprintdef readExcel(path) -> dict:# 打開Excel表格 文件名和表名都需要正確ExcelFile = xlrd.open_workbook(path)# 獲取SheetSheet1 = ExcelFile.sheet_by_name('Sheet1') # 通過名稱獲取Sheet# Sheet1 = ExcelFile.sheet_by_index(0) # 通過索引獲取Sheet# Sheet屬性 獲取Shee1的名稱、總行數、總列數等信息sheet_name = Sheet1.name # 名稱sheet_nrows = Sheet1.nrows # 行數sheet_ncols = Sheet1.ncols # 列數print(" Sheet名稱: %s\n" % sheet_name, "Sheet總行數: %s\n" % sheet_nrows, "Sheet總列數: %s\n" % sheet_ncols)print("\n" + "* " * 100)# Sheet單元格屬性cell 對一個具體的單元格操作 如獲取第2行第2列單元格數據值cell_value1 = Sheet1.cell(1, 1).value # cell的值cell_value2 = Sheet1.cell_value(1, 1) # cell值 等效于cell().valuecell_type = Sheet1.cell_type(1, 1)print("一個單元格內容: \n%s" % cell_value1)print("一個單元格內容: \n%s" % cell_value2)print("一個單元格內容類型: \n%s" % cell_type)print("\n" + "* " * 100)# Sheet獲取一行的數據和一列的數據及相關屬性row_value = Sheet1.row(1) # 獲取第2行的數據 值的類型有標注 [number:1.0, text:'小A', number:1.0, text:'2020.12.02']row_slice_value = Sheet1.row_slice(rowx=1, start_colx=0, end_colx=None) # row()方法的擴展 可指定范圍row_values = Sheet1.row_values(rowx=1, start_colx=0, end_colx=None) # 一行數據 rowx:第幾行 start_colx:從第幾列開始 end_colx:到第幾列結束(None 表示到最后一列) 類似于字符串split方法的概念row_len = Sheet1.row_len(1) # 獲取第二行長度(至有數據的最后一列的長度)row_types = Sheet1.row_types(rowx=1, start_colx=0, end_colx=None) # 獲取一行數據的類型table_header = Sheet1.row_values(rowx=0, start_colx=0, end_colx=None) # 獲取標題單元格(第一行)print("一行的值(帶類型): \n%s" % row_value)print("一行指定開始和結束范圍的值(帶類型): \n%s" % row_slice_value)print("一行指定開始和結束范圍的值: \n%s" % row_values)print("一行數據的長度: \n%s" % row_len)print("一行數據的類型: \n%s" % row_types)print("第一行的內容為: \n%s" % table_header)print("\n" + "* " * 100)# 獲取Sheet所有內容 格式為[[row_values], [row_values], ...... ]ls = [] # 定義一個列表用來存儲所有的行數據for row in range(1, sheet_nrows): # 從第2行開始 第1行一般是表頭 以實際情況為準# 獲取一行的值 為列表類型values = Sheet1.row_values(rowx=row, start_colx=0, end_colx=None)# 獲取登記日期列的單元格內容類型ctype = Sheet1.cell_type(rowx=row, colx=3)# 處理ctype類型值為2/3的日期類型為期望類型if ctype in [2, 3]:# 轉換為年月日格式的類型 datemode參數為時間基準標識符 0代表1900-01-01為基準,1代表1904-01-01為基準 通常選擇0_date = xldate_as_datetime(xldate=Sheet1.cell_value(rowx=row, colx=3), datemode=0).strftime("%Y-%m-%d")values[3] = _date# print(values)ls.append(values)pprint(ls)print("\n" + "* " * 100)return {"msg": "ok"}# 文件的路徑,如果路徑或者文件名有中文前面加一個r代表原生字符。 res = readExcel(r"C:\Users\Zhong\Desktop\demo.xlsx")print(res)Note
| Type symbol | Type number | Python value |
| XL_CELL_EMPTY | 0 | empty string '' |
| XL_CELL_TEXT?? ? ? ? | 1 | a Unicode string |
| XL_CELL_NUMBER?? ? ? ? | 2 | float |
| XL_CELL_DATE?? ? ? ? | 3 | float |
| XL_CELL_BOOLEAN?? ? ? ? | 4 | int; 1 means TRUE, 0 means FALSE |
| XL_CELL_ERROR?? ? ? ? | 5 | int representing internal Excel codes; for a text representation, refer to the supplied dictionary error_text_from_code |
| XL_CELL_BLANK?? ? ? ? | 6 | empty string ''. Note: this type will appear only when open_workbook(..., formatting_info=True) is used |
?
?
加入qq群交流技術? 關注微信公眾號
?
?
總結
以上是生活随笔為你收集整理的Zhong__xlrd基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装winrunner和HP QTP
- 下一篇: c语言双人贪吃蛇-基于图形库实现