python2使用openpyxl_使用openpyxl for Python2.6有些困难
如果其他地方已經問過這個問題,我很抱歉。在
我已經為Python(本例中為2.6)導入了openpyxl(v.1.6.1)。到目前為止,它工作得很好,但我想做什么,我不太明白。在
我將列出需要首先讀取的xlsx文件的結構?;旧鲜且粋€待命名單,看起來像這樣:
A1 B1 C1 D1
YYYY/MM/DD System1 System2 System3
A2 B2 C2 D2
2013/02/11 User A User B User C
A3 B3 C3 D3
2013/02/12 User D User E User F
A4 B4 C4 D4
2013/02/13 User G User H User I
我需要做的是首先掃描A中的所有單元格(除了第1行,所以A2到A無窮大),然后根據是否可以在A2到A無窮大的單元格中找到今天的日期,打印與今天日期相關的整行以及用戶關聯的系統(因此在本例中,B3、C3和D3以及B1、C1和D1)。在
我可以粘貼到目前為止,但不多:import openpyxl
from openpyxl import load_workbook
wb = load_workbook(filename = 'standby.xlsx', use_iterators = True)
ws = wb.get_sheet_by_name(name = 'Sheet1') # ws is now an IterableWorksheet
for row in ws.iter_rows(): # it brings a new method: iter_rows()
for cell in row:
print cell.internal_value
對于標準文本文件,我通常會這樣做:
^{pr2}$
我只是不知道如何使用openpyxl來處理帶有xlsx文件的文本文件。有誰能給我個提示嗎?在
我想我需要做的是掃描A下的所有內容(不確定如何進行),匹配今天的日期(我認為我可以計算出的日期),然后打印出整行(Bxxx、Cxxx、Dxxx等),如果找到了今天的日期(也不確定如何進行)。在
希望我能解釋我的問題,但如果沒有,請告訴我,我會再試一次。在
編輯:多虧了格倫,我覺得我比以前進步了一點,還沒有完全達到目標。到目前為止我掌握的代碼:import openpyxl
from openpyxl import load_workbook
def find_row(today, ws):
for a in ws.iter_rows():
if today == a.internal_value:
return (a)
def main():
wb = load_workbook(filename = 'standby.xlsx', use_iterators = True)
ws = wb.get_sheet_by_name(name = 'Sheet1') # ws is now an IterableWorksheet
today = '2013-02-12 00:00:00' #whatever date format you're using
row = find_row(today, ws)
print row
def test():
wb = load_workbook(filename = r'standby.xlsx')
sheet_ranges = wb.get_sheet_by_name(name = 'Sheet1')
print sheet_ranges.cell('A2607').value # D18
if __name__ == '__main__':
main()
我現在遇到的錯誤是“AttributeError:'tuple'對象沒有屬性'internal'u value'”(仍在谷歌搜索這個)。在
def find_row部分以前是這樣的:def find_row(today, ws):
for a in ws.rows():
if today == a.internal_value:
return (a)
結果是:
NotImplementedError:請改用“iter_rows()”
編輯2:多虧了格倫·斯溫菲爾德的幫助和耐心,我想我終于弄明白了。下面是代碼現在的樣子(如果看起來有點亂,請原諒,電子表格中有很多列):
導入日期時間
導入openpyxl
從openpyxl導入加載工作簿def find_row(today, ws):
for a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,a51,a52,a53,a54,a55,a56,a57,a58,a59,a60,a61,a62,a63,a64,a65,a66,a67,a68,a69,a70,a71,a72,a73,a74,a75,a76,a77,a78,a79,a80,a81,a82,a83,a84,a85,a86,a87,a88,a89,a90,a91,a92,a93 in ws.iter_rows():
if today == a1.internal_value:
print(a1.internal_value,a2.internal_value,a3.internal_value,a4.internal_value,a5.internal_value,a6.internal_value,a7.internal_value,a8.internal_value,a9.internal_value,a10.internal_value,a11.internal_value,a12.internal_value,a13.internal_value,a14.internal_value,a15.internal_value,a16.internal_value,a17.internal_value,a18.internal_value,a19.internal_value,a20.internal_value,a21.internal_value,a22.internal_value,a23.internal_value,a24.internal_value,a25.internal_value,a26.internal_value,a27.internal_value,a28.internal_value,a29.internal_value,a30.internal_value,a31.internal_value,a32.internal_value,a33.internal_value,a34.internal_value,a35.internal_value,a36.internal_value,a37.internal_value,a38.internal_value,a39.internal_value,a40.internal_value,a41.internal_value,a42.internal_value,a43.internal_value,a44.internal_value,a45.internal_value,a46.internal_value,a47.internal_value,a48.internal_value,a49.internal_value,a50.internal_value,a51.internal_value,a52.internal_value,a53.internal_value,a54.internal_value,a55.internal_value,a56.internal_value,a57.internal_value,a58.internal_value,a59.internal_value,a60.internal_value,a61.internal_value,a62.internal_value,a63.internal_value,a64.internal_value,a65.internal_value,a66.internal_value,a67.internal_value,a68.internal_value,a69.internal_value,a70.internal_value,a71.internal_value,a72.internal_value,a73.internal_value,a74.internal_value,a75.internal_value,a76.internal_value,a77.internal_value,a78.internal_value,a79.internal_value,a80.internal_value,a81.internal_value,a82.internal_value,a83.internal_value,a84.internal_value,a85.internal_value,a86.internal_value,a87.internal_value,a88.internal_value,a89.internal_value,a90.internal_value,a91.internal_value,a92.internal_value,a93.internal_value)
def main():
wb = load_workbook(filename = 'standby.xlsx', use_iterators = True)
ws = wb.get_sheet_by_name(name = 'Sheet1') # ws is now an IterableWorksheet
today = datetime.datetime(2013, 02, 12, 0, 0) #whatever date format you're using
row = find_row(today, ws)
def test():
wb = load_workbook(filename = r'standby.xlsx')
sheet_ranges = wb.get_sheet_by_name(name = 'Sheet1')
print sheet_ranges.cell('A2607').value # D18
if __name__ == '__main__':
main()
總結
以上是生活随笔為你收集整理的python2使用openpyxl_使用openpyxl for Python2.6有些困难的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特征值与特征向量_机器学习和线性代数 -
- 下一篇: linux停止python程序_pyth