中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分析openpyxl庫,遇到批量合并單元格的問題

發布時間:2021-03-15 10:53:12 來源:億速云 閱讀:2931 作者:TREX 欄目:開發技術

這篇文章主要講解了“分析openpyxl庫,遇到批量合并單元格的問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“分析openpyxl庫,遇到批量合并單元格的問題”吧!

from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import NamedStyle, Border, Side, Alignment 
 
# 創建一個工作薄
wb = Workbook()
 
# 創建一個工作表(注意是一個屬性)
table = wb.active
 
# excel創建的工作表名默認為sheet1,一下代碼實現了給新創建的工作表創建一個新的名字
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個單元格'
# 法一不適合批量添加
for i in range(2,10):
 table.merge_cells(start_row=i, start_column=3, end_row=i, end_column=4)

效果如下:

分析openpyxl庫,遇到批量合并單元格的問題

補充:python操作excel --openpyxl里的關于merge的一些bug

開始新的工作不久,工作內容依然是數據相關

新工作數據輸出模式是用excel,大概是每天導出新數據并用excel體現,同時要保留之前的數據。

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

我目前在做關于這個的自動化腳本,使用的庫是openpyxl,下面說說關于這個的幾個小bug。

1- 在 2.5.x版本中,當你合并單元格的時候

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

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

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

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

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

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

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

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

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

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

........................ 
 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.
........................

感謝各位的閱讀,以上就是“分析openpyxl庫,遇到批量合并單元格的問題”的內容了,經過本文的學習后,相信大家對分析openpyxl庫,遇到批量合并單元格的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荆州市| 呼玛县| 东宁县| 洞口县| 油尖旺区| 洞头县| 洮南市| 龙州县| 赤水市| 海林市| 陈巴尔虎旗| 始兴县| 耒阳市| 屏南县| 汤阴县| 翁牛特旗| 阿拉善盟| 昌江| 临桂县| 牡丹江市| 富民县| 新乐市| 桐庐县| 古蔺县| 中宁县| 东辽县| 茂名市| 盈江县| 开封市| 鱼台县| 江口县| 万宁市| 米林县| 丹寨县| 比如县| 五指山市| 什邡市| 龙里县| 罗甸县| 镇赉县| 于田县|