欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談openpyxl庫,遇到批量合并單元格的問題

 更新時(shí)間:2021年03月13日 09:09:55   作者:刺骨寒風(fēng)刺  
這篇文章主要介紹了淺談openpyxl庫,遇到批量合并單元格的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import NamedStyle, Border, Side, Alignment 
 
# 創(chuàng)建一個(gè)工作薄
wb = Workbook()
 
# 創(chuàng)建一個(gè)工作表(注意是一個(gè)屬性)
table = wb.active
 
# excel創(chuàng)建的工作表名默認(rèn)為sheet1,一下代碼實(shí)現(xiàn)了給新創(chuàng)建的工作表創(chuàng)建一個(gè)新的名字
table.title = 'test'
 
# 合并C1 D1 
# 法一
# table.merge_cells('C1:D1')
# table.cell(row = 1,column = 3,value = 'pdf/mp3鏈接')
# 法二
table.merge_cells(start_row=1, start_column=3, end_row=1, end_column=4)
table.cell(1, 3).value = '合并2個(gè)單元格'
# 法一不適合批量添加
for i in range(2,10):
 table.merge_cells(start_row=i, start_column=3, end_row=i, end_column=4)

效果如下:

補(bǔ)充:python操作excel --openpyxl里的關(guān)于merge的一些bug

開始新的工作不久,工作內(nèi)容依然是數(shù)據(jù)相關(guān)

新工作數(shù)據(jù)輸出模式是用excel,大概是每天導(dǎo)出新數(shù)據(jù)并用excel體現(xiàn),同時(shí)要保留之前的數(shù)據(jù)。

我來之前,同時(shí)寫好了許多sql,然后就從Navicat里面復(fù)制粘貼到excel中。

我目前在做關(guān)于這個(gè)的自動(dòng)化腳本,使用的庫是openpyxl,下面說說關(guān)于這個(gè)的幾個(gè)小bug。

1- 在 2.5.x版本中,當(dāng)你合并單元格的時(shí)候

使用的是merge_cells(),然后,當(dāng)你合并多個(gè)單元格的時(shí)候,之前合并的單元格的邊框會(huì)消失。這個(gè)問題我再官網(wǎng)找到解決方案,稍有復(fù)雜,但是只要你更新到2.6.x版本,這個(gè)問題自動(dòng)解決。

2- 2.6x版本中,使用unmerge_cell() 解開合并單元格后,除了左上角可以寫入,其他被解開的單元格無法寫入,會(huì)提示說 ‘read_only'這類的。

例如:你的 ("A1:D4") 是合并的,當(dāng)你使用 work_sheet.unmerge_cell("A1:D4")后,會(huì)解開合并,

然后你卻只能給A1賦值,不能給A2,A3,A4,B1....賦值,提示如下

=== > - Openpyxl ['MergedCell' object attribute 'hyperlink' is read-only]

我嘗試改用delete直接刪除,然而這種方法只能刪除內(nèi)容,格式還是被鎖定的。

找了很久沒有結(jié)局方法,只好慢慢看源碼。

大概是說,接觸合并后,代碼默認(rèn)其他單元格應(yīng)該是空值且不能被賦新值,也許是因?yàn)橛X得解開只有要再合并??(不明白設(shè)疑初衷)

處理方法如下,大概思想是格式化該單元格的屬性,即取消的read_only屬性。

大概在源碼的中workshet.py文件的大約620做添加如下代碼:(# autho...開始,大家自己對(duì)照源碼添加吧~~~)

........................ 
 if cr.coord not in self.merged_cells:
  raise ValueError("Cell range {0} is not merged".format(cr.coord))
 
 self.merged_cells.remove(cr) 
 # Deletes the MergedCellRange.
 # del self._merged_cell_range[cr.bounds]
 # autho : watson
 # aim : deal with the bug about umerger
 # describe : Add the following five lines of code to format the attribute.
 min_col, min_row, max_col, max_row = cr.bounds
 for row in range(min_row, max_row + 1):
  for col in range(min_col, max_col + 1):
  if col == min_col and row == min_row:
   continue
  del self._cells[(row, col)]
 
 def append(self, iterable):
 """Appends a group of values at the bottom of the current sheet.
........................ 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • python datetime中strptime用法詳解

    python datetime中strptime用法詳解

    這篇文章主要介紹了python 中datetime中strptime用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python列表推導(dǎo)式與生成器用法分析

    Python列表推導(dǎo)式與生成器用法分析

    這篇文章主要介紹了Python列表推導(dǎo)式與生成器用法,結(jié)合實(shí)例形式分析了列表推導(dǎo)式、生成器的原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • Python超詳細(xì)分步解析隨機(jī)漫步

    Python超詳細(xì)分步解析隨機(jī)漫步

    隨機(jī)游走(random walk)也稱隨機(jī)漫步,隨機(jī)行走等是指基于過去的表現(xiàn),無法預(yù)測(cè)將來的發(fā)展步驟和方向。核心是指任何無規(guī)則行走者所帶的守恒量都各自對(duì)應(yīng)著一個(gè)擴(kuò)散運(yùn)輸定律,接近布朗運(yùn)動(dòng),現(xiàn)階段主要應(yīng)用于互聯(lián)網(wǎng)鏈接分析及金融股票市場(chǎng)中
    2022-03-03
  • python中for語句簡(jiǎn)單遍歷數(shù)據(jù)的方法

    python中for語句簡(jiǎn)單遍歷數(shù)據(jù)的方法

    這篇文章主要介紹了python中for語句簡(jiǎn)單遍歷數(shù)據(jù)的方法,以一個(gè)簡(jiǎn)單實(shí)例形式分析了Python中for語句遍歷數(shù)據(jù)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)(一)K近鄰法

    python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)(一)K近鄰法

    這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)第一篇,K近鄰法的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python lambda 匿名函數(shù)優(yōu)點(diǎn)和局限性深度總結(jié)

    Python lambda 匿名函數(shù)優(yōu)點(diǎn)和局限性深度總結(jié)

    這篇文章主要為大家介紹了Python lambda 匿名函數(shù)的優(yōu)點(diǎn)和局限性深度總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 整理Python中常用的conda命令操作

    整理Python中常用的conda命令操作

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著Python中常用的conda命令行操作展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python學(xué)習(xí)小技巧之列表項(xiàng)的推導(dǎo)式與過濾操作

    Python學(xué)習(xí)小技巧之列表項(xiàng)的推導(dǎo)式與過濾操作

    這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之列表項(xiàng)的推導(dǎo)式與過濾操作的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看把。
    2017-05-05
  • 零基礎(chǔ)寫python爬蟲之爬蟲框架Scrapy安裝配置

    零基礎(chǔ)寫python爬蟲之爬蟲框架Scrapy安裝配置

    Scrapy是一個(gè)使用Python編寫的,輕量級(jí)的,簡(jiǎn)單輕巧,并且使用起來非常的方便。使用Scrapy可以很方便的完成網(wǎng)上數(shù)據(jù)的采集工作,它為我們完成了大量的工作,而不需要自己費(fèi)大力氣去開發(fā)。
    2014-11-11
  • python列表使用實(shí)現(xiàn)名字管理系統(tǒng)

    python列表使用實(shí)現(xiàn)名字管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python列表使用實(shí)現(xiàn)名字管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論