2017-06-01 30 views
-1

免責聲明,不幸的是我不能使用pandas模塊。用類似於pandas的方式讀取excep列與openpyxl

我需要能夠讀取xls和xlsx文件。

更具體地說我現在的要求是:

1.Being能夠簡單地讀取每個表中的列名。
2.通過列名保存值列表,獲取列表中的所有列值。

pandas1這樣樸素簡單
舉例:

import pandas as pd 

df = pd.read_excel('test.xls') 
df.columns.values.tolist() 

舉例2

import pandas as pd 

df = pd.read_excel('test.xls') 
df[col_name].values 

請告知我如何使用openpyxl達到同樣的,如果沒有可能,也許使用類似於pandas的其他包裝。

+0

這包括在文檔http://openpyxl.readthedocs.io/en/latest/tutorial.html#accessing-many-cells –

+0

@CharlieClark:你可以請建議關於https://stackoverflow.com/questions/44337032/can-i-disable-openpyxl-from-automatically-parsing-strings-to-datetime – JavaSa

回答

1

這將產生所需的結果。

import openpyxl 

wb = openpyxl.load_workbook(path) 
ws = wb[SheetName] 

問題1):

[cell.value for cell in row if cell.value 
for row in ws.iter_rows(min_col=1, max_row=1)] 

['foo', 
'buzz', 
'fizz'] 

該如何工作。我們指定它開始查看的列是列1,由min_col=1指定。我們將其停止查看的行指定爲第1行,由max_row=1指定。 if語句檢查單元是否爲空,並且它不返回該值,這是因爲我們不知道列的數量。

問題2)

[cell.value for cell in row if cell.value 
for row in ws.iter_rows(min_col=1, max_col=1, min_row=2)] 

['this', 
'is', 
'a', 
'test'] 

同樣的邏輯在這裏也適用。通過使用min_col & max_col並將兩者設置爲1,我們將搜索綁定到僅第一列。最小行現在是第2行,這意味着我們跳過標題並一直向下搜索第1列,直到它不返回任何內容。

+0

嗨 感謝您的回覆,您能解釋一下第一個代碼是如何返回列名的 - 後面的邏輯是什麼? 第二個問題以及謝謝 – JavaSa

+0

更新了一個簡要說明 –

+0

如果列標題不顯示爲第一行怎麼辦? – JavaSa

相關問題