openpyxl各種操作匯總(2)—— 讀寫單元格辩恼、行、列

單元格

單元格位置作為工作表的鍵直接讀任叫巍:

    >>> c = ws['A4']

為單元格賦值:

    >>> ws['A4'] = 4
    >>> c.value = 'hello, world'
    >>> _ = ws.cell(column=1, row=2, value="AA")

多個單元格

可以使用切片訪問單元格區(qū)域:

    >>> cell_range = ws['A1':'C2']

使用數(shù)值格式:

    >>> # set date using a Python datetime
    >>> ws['A1'] = datetime.datetime(2010, 7, 21)
    >>>
    >>> ws['A1'].number_format
    'yyyy-mm-dd h:mm:ss'

使用公式:

    >>> # add a simple formula
    >>> ws["A1"] = "=SUM(1, 1)"

合并單元格時灶伊,除左上角單元格外,所有單元格都將從工作表中刪除:

    >>> ws.merge_cells('A2:D2')
    >>> ws.unmerge_cells('A2:D2')
    >>>
    >>> # or equivalently
    >>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
    >>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4) 

行寒跳、列

可以單獨指定行聘萨、列、或者行列的范圍:

    >>> colC = ws['C']
    >>> col_range = ws['C:D']
    >>> row10 = ws[10]
    >>> row_range = ws[5:10]

可以使用Worksheet.iter_rows()方法遍歷行:

    >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
    ...    for cell in row:
    ...        print(cell)
    <Cell Sheet1.A1>
    <Cell Sheet1.B1>
    <Cell Sheet1.C1>
    <Cell Sheet1.A2>
    <Cell Sheet1.B2>
    <Cell Sheet1.C2>

同樣的Worksheet.iter_cols()方法將遍歷列:

    >>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
    ...     for cell in col:
    ...         print(cell)
    <Cell Sheet1.A1>
    <Cell Sheet1.A2>
    <Cell Sheet1.B1>
    <Cell Sheet1.B2>
    <Cell Sheet1.C1>
    <Cell Sheet1.C2>

遍歷文件的所有行或列童太,可以使用Worksheet.rows屬性:

    >>> ws = wb.active
    >>> ws['C9'] = 'hello world'
    >>> tuple(ws.rows)
    ((<Cell Sheet.A1>, <Cell Sheet.B1>, <Cell Sheet.C1>),
    (<Cell Sheet.A2>, <Cell Sheet.B2>, <Cell Sheet.C2>),
    (<Cell Sheet.A3>, <Cell Sheet.B3>, <Cell Sheet.C3>),
    (<Cell Sheet.A4>, <Cell Sheet.B4>, <Cell Sheet.C4>),
    (<Cell Sheet.A5>, <Cell Sheet.B5>, <Cell Sheet.C5>),
    (<Cell Sheet.A6>, <Cell Sheet.B6>, <Cell Sheet.C6>),
    (<Cell Sheet.A7>, <Cell Sheet.B7>, <Cell Sheet.C7>),
    (<Cell Sheet.A8>, <Cell Sheet.B8>, <Cell Sheet.C8>),
    (<Cell Sheet.A9>, <Cell Sheet.B9>, <Cell Sheet.C9>))

Worksheet.columns屬性:

    >>> tuple(ws.columns)
    ((<Cell Sheet.A1>,
    <Cell Sheet.A2>,
    <Cell Sheet.A3>,
    <Cell Sheet.A4>,
    <Cell Sheet.A5>,
    <Cell Sheet.A6>,
    ...
    <Cell Sheet.B7>,
    <Cell Sheet.B8>,
    <Cell Sheet.B9>),
    (<Cell Sheet.C1>,
    <Cell Sheet.C2>,
    <Cell Sheet.C3>,
    <Cell Sheet.C4>,
    <Cell Sheet.C5>,
    <Cell Sheet.C6>,
    <Cell Sheet.C7>,
    <Cell Sheet.C8>,
    <Cell Sheet.C9>))

使用Worksheet.append()或者迭代使用Worksheet.cell()新增一行數(shù)據(jù):

    >>> for row in range(1, 40):
    ...     ws1.append(range(600))
    
    >>> for row in range(10, 20):
    ...     for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))

使用Worksheet.insert_rows()插入一行或幾行:

     >>> from openpyxl.utils import get_column_letter
     >>> ws.insert_rows(7) 
     >>> row7 = ws[7]
     >>> for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=7, value="{0}".format(get_column_letter(col)))

Worksheet.insert_cols()操作類似米辐。Worksheet.delete_rows()Worksheet.delete_cols()用來批量刪除行和列。

只讀取值

使用Worksheet.values屬性遍歷工作表中的所有行康愤,但只返回單元格值:

    for row in ws.values:
       for value in row:
         print(value)

Worksheet.iter_rows()Worksheet.iter_cols()可以設置values_only參數(shù)來僅返回單元格的值:

    >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    ...   print(row)
    (None, None, None)
    (None, None, None)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末儡循,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子征冷,更是在濱河造成了極大的恐慌择膝,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件检激,死亡現(xiàn)場離奇詭異肴捉,居然都是意外死亡,警方通過查閱死者的電腦和手機叔收,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門齿穗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饺律,你說我怎么就攤上這事窃页。” “怎么了复濒?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵脖卖,是天一觀的道長。 經(jīng)常有香客問我巧颈,道長畦木,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任砸泛,我火速辦了婚禮十籍,結(jié)果婚禮上蛆封,老公的妹妹穿的比我還像新娘。我一直安慰自己勾栗,他們只是感情好惨篱,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著围俘,像睡著了一般妒蛇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上楷拳,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音吏奸,去河邊找鬼欢揖。 笑死,一個胖子當著我的面吹牛奋蔚,可吹牛的內(nèi)容都是我干的她混。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼泊碑,長吁一口氣:“原來是場噩夢啊……” “哼坤按!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起馒过,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臭脓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后腹忽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體来累,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年窘奏,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘹锁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡着裹,死狀恐怖领猾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骇扇,我是刑警寧澤摔竿,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站匠题,受9級特大地震影響拯坟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜韭山,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一郁季、第九天 我趴在偏房一處隱蔽的房頂上張望冷溃。 院中可真熱鬧,春花似錦梦裂、人聲如沸似枕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凿歼。三九已至,卻和暖如春冗恨,著一層夾襖步出監(jiān)牢的瞬間答憔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工掀抹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虐拓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓傲武,卻偏偏與公主長得像蓉驹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子揪利,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355