python 读plt文件_用python读Excel文件
在IC設計、驗證、后端中經常會用Excel來做配置文件、寄存器表、定義后端SDC參數等,不管Excel好不好用,但學習成本低啊。
Excel文件的結構
Excel文件主要由工作簿(book)、工作表(sheet)、單元格(cell)組成。一個Excel文件就是一個工作簿。一個工作簿可以有N個工作表。每個工作表由N行xM列個單元格組成,行通常用阿拉伯數字編號,列用英文字母編號。
Excel文件還包括其它輔助信息,如格式、合并、宏、VBA等。
用xlrd讀Excel的基本操作
xlrd是讀Excel應用最廣泛的第三方庫之一,安裝方法:
pip3 install xlrd以下圖的Excel文件為例,介紹讀取的方法:
Step 1
讀Excel文件的第一步是打開工作簿:
import xlrdbook = xlrd.open_workbook('test.xls')
Step 2
第二步是打開工作表,'Sheet1'。
sheets = book.sheet_name()# ['Sheet1', 'Sheet2']
sheets_num = len(book.sheet_name())
# 2sheet0 = book.sheet_by_index(0)
#
sheet0 = book.sheet_by_name('Sheet1')
#
Step 3
從單元格里讀數據。先來看看一共有多少行、多少列。
max_rows = sheet0.nrows # 5max_cols = sheet0.ncols # 5
打印出所有單元格的數據:
for row in range(max_rows):for col in range(max_cols):
print('\t', end='')
print(sheet0.cell(row, col).value, end=' ')
print('')
# 11.0 12.0 13.0 14.0 15.0
# 21.0 23.0 24.0 25.0
# 33.0 34.0
# 41.0 42.0 43.0
# 51.0 52.0 54.0 55.0
讀取內容與預期一致。
注意:
索引從0開始
合并單元格,只能從左上角的單元格里讀出,其余單元格讀出的是空字符''
空單元格(沒值的),讀取的也是空字符串''
我們可以進一步通過判斷單元格值的類型來確認:
for row in range(max_rows):for col in range(max_cols):
print('\t', end='')
print(sheet0.cell(row, col).ctype, end=' ')
print('')
# 2 2 2 2 2
# 2 0 2 2 2
# 0 0 2 2 0
# 2 2 2 0 0
# 2 2 0 2 2
ctype的值與含義:
0 - 空
1 - 字符串
2 - 數字
3 - 日期
4 - 布爾型
可以看出,單元格數據的類型確實與打印的數值一致。
但有一個問題,無法區分是空值和合并單元格。
讀取合并單元格
在實際項目中,有時候我們希望能夠
判斷是否是合并單元格,
跳過合并單元格(得到合并單元格的邊界)。
其實,在xlrd的sheet里,已經讀取了合并單元格的信息。只需要在open_workbook()時打開選項:
book = xlrd.open_workbook('test.xls', formatting_info=True)sheet0 = book.sheet_by_index(0)
merged_cells = sheet0.merged_cells
print(merged_cells)
# [(1, 3, 0, 2), (2, 4, 3, 5)]
返回了兩個元組,就是兩個合并單元格。含義:(start_row, end_row, start_col, end_col)
注意:與python語法一致,不包括end行或列。
那么我們可以寫兩個函數來把這個列表封裝一下:
def isMergedCell(row, col):for r in merged_cells:
if row >= r[0] and row < r[1] and col >= r[2] and col < r[3]:
return True
return False
print(isMergedCell(1, 0)) # True
print(isMergedCell(2, 1)) # True
print(isMergedCell(4, 2)) # False
def getMargin(row, col):
if(isMergedCell(row, col)):
for r in merged_cells:
if row >= r[0] and row < r[1] and col >= r[2] and col < r[3]:
return (r[1]-1, r[3]-1)
else:
return (row, col)
print(getMargin(1, 0)) #(2, 1)
print(getMargin(2 ,3)) #(3, 4)
是不是很方便?通過這段代碼,我們知道cell(4,2)只是空值,不是合并單元格。也輕松獲取了合并單元格的邊界。
總結
在理解了Excel的存儲結構后,xlrd的使用就顯得非常方便。另外,xlrd不僅可以讀取xls,也可以讀取xlsx(就是說xlrd可以兼容新老版本的Excel)。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python 读plt文件_用python读Excel文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: log4js
- 下一篇: python自动化从零开始_从零开始学S