日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Zhong__xlrd基本使用

發布時間:2023/12/14 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Zhong__xlrd基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

時間:2020.12.02

環境:Python3

目的:使用xlrd讀取Excel文件的一般操作

說明:

作者:Zhong QQ交流群:121160124 歡迎加入!

?

安裝xlrd

pip install -i https://pypi.douban.com/simple xlrd

準備演示使用的excel文件 demo.xlsx 寫入以下的測試數據

ID姓名年齡登記日期
1小A12020.12.02
2小B22020.12.03
3小C32020.12.04
4小D42020.12.05
5小E52020.12.06
6小F62020.12.07
7小G72020.12.08
8小H82020.12.09
9小I92020.12.10
10小J102020.12.11
11小K112020.12.12
12小L122020.12.13
13小M132020.12.14
14小N142020.12.15
15小O152020.12.16
16小P162020.12.17
17小Q1712/18/2020
18小R1812/19/2020
19小S192020年12月20
20小T202020年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

  • 索引是從(0, 0)開始
  • 一般excel文件中獲取數據的內容時內容部分是從第二行開始
  • 單元格內容類型一般有0-6 7種類型? 如下
  • Type symbolType numberPython value
    XL_CELL_EMPTY0empty string ''
    XL_CELL_TEXT?? ? ? ?1a Unicode string
    XL_CELL_NUMBER?? ? ? ?2float
    XL_CELL_DATE?? ? ? ?3float
    XL_CELL_BOOLEAN?? ? ? ?4int; 1 means TRUE, 0 means FALSE
    XL_CELL_ERROR?? ? ? ?5int representing internal Excel codes; for a text representation, refer to the supplied dictionary error_text_from_code
    XL_CELL_BLANK?? ? ? ?6empty string ''. Note: this type will appear only when open_workbook(..., formatting_info=True) is used

    ?

    ?

    加入qq群交流技術? 關注微信公眾號

    ?

    ?

    總結

    以上是生活随笔為你收集整理的Zhong__xlrd基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。