openpyxl3.0官方文檔(4)——只讀和只寫兩種優(yōu)化模式

只讀模式?

有時(shí)收恢,您需要打開或編寫非常大的XLSX文件究孕,而openpyxl中的常用方式將無法處理庸毫。幸運(yùn)的是,有兩種模式使您能夠以固定或接近固定的內(nèi)存消耗讀取和寫入無限的數(shù)據(jù)量合是。
簡介:class:openpyxl.worksheet._read_only.ReadOnlyWorksheet:

    from openpyxl import load_workbook
    wb = load_workbook(filename='large_file.xlsx', read_only=True)
    ws = wb['big_data']
    
    for row in ws.rows:
        for cell in row:
            print(cell.value)
    

警告

  • :class:openpyxl.worksheet._read_only.ReadOnlyWorksheet是只讀的
    返回的單元格類型不是:class:openpyxl.cell.cell.Cell了罪,而是:class:openpyxl.cell._read_only.ReadOnlyCell。

工作表尺寸?

只讀模式依賴于創(chuàng)建文件的應(yīng)用程序和庫所提供有關(guān)工作表的正確信息聪全,特別是其中已使用部分信息泊藕,即尺寸。有些應(yīng)用程序設(shè)置尺寸信息不正確难礼。您可以使用ws.calculate_dimension()來檢查該信息娃圆。如果返回一個(gè)錯(cuò)誤范圍汽久,簡單地重置max_row和max_column屬性就可以使用該文件:

    ws.reset_dimensions()
    

只寫模式?

write- only模式下,openpyxl.worksheet.worksheet.Worksheet已被一個(gè)更快的替代項(xiàng)替換踊餐,:class:openpyxl.worksheet._write_only.WriteOnlyWorksheet。如果要轉(zhuǎn)儲大量數(shù)據(jù)臀稚,請確保已安裝lxml庫吝岭。

    >>> from openpyxl import Workbook
    >>> wb = Workbook(write_only=True)
    >>> ws = wb.create_sheet()
    >>>
    >>> # now we'll fill it with 100 rows x 200 columns
    >>>
    >>> for irow in range(100):
    ...     ws.append(['%d' % i for i in range(200)])
    >>> # save the file
    >>> wb.save('new_big_file.xlsx') 
    

如果單元格包含樣式或注釋信息,請使用:func:openpyxl.cell.WriteOnlyCell

    >>> from openpyxl import Workbook
    >>> wb = Workbook(write_only = True)
    >>> ws = wb.create_sheet()
    >>> from openpyxl.cell import WriteOnlyCell
    >>> from openpyxl.comments import Comment
    >>> from openpyxl.styles import Font
    >>> cell = WriteOnlyCell(ws, value="hello world")
    >>> cell.font = Font(name='Courier', size=36)
    >>> cell.comment = Comment(text="A comment", author="Author's Name")
    >>> ws.append([cell, 3.14, None])
    >>> wb.save('write_only_file.xlsx')
    

這將創(chuàng)建一個(gè)只有一張工作表的只寫工作簿吧寺,并附加一個(gè)包含3個(gè)單元格的行:一個(gè)具有自定義字體和注釋的文本單元格窜管、一個(gè)浮點(diǎn)數(shù)單元格和一個(gè)空單元格(將被丟棄)。
請注意

  • 與普通工作簿不同稚机,新創(chuàng)建的只寫工作簿不包含任何工作表幕帆;必須使用:func:create_sheet()方法來創(chuàng)建工作表。
  • 在只寫工作簿中赖条,只能使用以下:func:append()方法來添加行失乾。不能在任意位置使用:func:cell()或者:func:iter_rows()方法寫入(或讀取)單元格纬乍。
  • 它可以導(dǎo)出無限量的數(shù)據(jù)(甚至超過Excel的實(shí)際處理能力)碱茁,同時(shí)將內(nèi)存使用量控制在10Mb以下。
  • 只寫工作簿只能保存一次仿贬。之后纽竣,每次嘗試保存工作簿或使用append()附加到現(xiàn)有工作表時(shí)都會引發(fā)一個(gè):class:openpyxl.utils.exceptions.WorkbookAlreadySaved異常。
  • 在單元格數(shù)據(jù)之前出現(xiàn)在文件中的所有內(nèi)容都必須在添加單元格之前創(chuàng)建茧泪,因?yàn)樗仨氃趩卧裰皩懭胛募寻薄@纾瑧?yīng)在添加單元格之前設(shè)置freeze_panes凍結(jié)窗口队伟。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末穴吹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缰泡,更是在濱河造成了極大的恐慌刀荒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棘钞,死亡現(xiàn)場離奇詭異缠借,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宜猜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門泼返,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姨拥,你說我怎么就攤上這事绅喉∏耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵柴罐,是天一觀的道長徽缚。 經(jīng)常有香客問我,道長革屠,這世上最難降的妖魔是什么凿试? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮似芝,結(jié)果婚禮上那婉,老公的妹妹穿的比我還像新娘。我一直安慰自己党瓮,他們只是感情好详炬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寞奸,像睡著了一般呛谜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枪萄,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天呻率,我揣著相機(jī)與錄音,去河邊找鬼呻引。 笑死礼仗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逻悠。 我是一名探鬼主播元践,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼童谒!你這毒婦竟也來了单旁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饥伊,失蹤者是張志新(化名)和其女友劉穎象浑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琅豆,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愉豺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茫因。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚪拦。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驰贷,到底是詐尸還是另有隱情盛嘿,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布括袒,位于F島的核電站次兆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锹锰。R本人自食惡果不足惜类垦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望城须。 院中可真熱鬧,春花似錦米苹、人聲如沸糕伐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽良瞧。三九已至,卻和暖如春训唱,著一層夾襖步出監(jiān)牢的瞬間褥蚯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工况增, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赞庶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓澳骤,卻偏偏與公主長得像歧强,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子为肮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355