python合並單元格
A. python操作word文檔,如何合並單元格
>>>app=my.Office.Word.GetInstance()
>>>doc=app.Documents[0]
>>>table=doc.Tables[1]
>>>table.Cell(1,1).Select()
>>>app.Selection.MoveDown(Unit=5,Count=2,Extend=1)
>>>app.Selection.Cells.Merge()
>>>
my.Office.Word.GetInstance()用win32com得到Word的Application對象的實例
我所使用的樣本word文件中包含兩個Table第二個Table是想要修改的
table.Cell(1,1).Select()用於選中這個樣表的第一個單元格
app.Selection.MoveDown用於獲得向下多選取3個單元格
app.Selection.Cells.Merge()用於執行合並工作
B. Python 拆分excel表內所有合並單元格
import openpyxl
from openpyxl.styles import PatternFill
workbook = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\user_info_format1.xlsx') # 載入已經存在的excel
name_list = workbook.sheetnames #獲取所有的sheet表名
worksheet = workbook[name_list[0]]
fill = PatternFill("solid", fgColor="FF0000") #設置填充樣式
m_list = worksheet.merged_cells # 合並單元格的位置信息,可迭代對象(單個是一個'openpyxl.worksheet.cell_range.CellRange'對象),print後就是excel坐標信息
cr = []
for m_area in m_list:
# 合並單元格的起始行坐標、終止行坐標。。。。,
r1, r2, c1, c2 = m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_col
# 縱向合並單元格的位置信息提取出
if r2 - r1 > 0 or c2 - c1 > 0:
cr.append((r1, r2, c1, c2))
print('符合條件%s' % str(m_area))
#print(cr)
# 這里注意需要把合並單元格的信息提取出再拆分
for r in cr:
worksheet.unmerge_cells(start_row=r[0], end_row=r[1],
start_column=r[2], end_column=r[3])
if r[3]-r[2]==0: #單獨列合並
for row in (range(r[0], r[1]+1)):
worksheet.cell(row=row, column=r[3], value=worksheet.cell(r[0], r[2]).value)
worksheet.cell(row, column=r[3]).fill = fill #將對應拆分單元格填充顏色
elif r[1]-r[0]==0 : #單獨行合並
for column in (range(r[2], r[3]+1)):
worksheet.cell(row=r[1], column=column, value=worksheet.cell(r[0], r[2]).value)
worksheet.cell(row=r[0], column=column).fill = fill #將對應拆分單元格填充顏色
else : #多行、列合並
for row in (range(r[0], r[1]+1)):
for column in (range(r[2], r[3]+1)):
worksheet.cell(row, column, value=worksheet.cell(r[0], r[2]).value)
worksheet.cell(row, column).fill=fill #將對應拆分單元格填充顏色
workbook.save(r'C:\Users\Administrator\Desktop\data25.xlsx') #另存為新表
C. Python處理Excel效率高十倍(下篇)通篇硬幹貨,再也不用加班啦
《用Python處理Excel表格》下篇來啦!
身為工作黨或學生黨的你,平日里肯定少不了與Excel表格打交道的機會。當你用Excel處理較多數據時,還在使用最原始的人工操作嗎?現在教你如何用Python處理Excel,從此處理表格再也不加班,時間縮短數十倍!
上篇我們進行了一些事前准備,目的是用Python提取Excel表中的數據。而這一篇便是在獲取數據的基礎上,對Excel表格的實操處理。
第9行代碼用來指定創建的excel的活動表的名字:
·不寫第9行,默認創建sheet
·寫了第9行,創建指定名字的sheet表
第9行代碼,通過給單元格重新賦值,來修改單元格的值
第9行代碼的另一種寫法sheet['B1'].value = 'age'
第10行代碼,保存時如果使用原來的(第7行)名字,就直接保存;如果使用了別的名字,就會另存為一個新文件
插入有效數據
使用append()方法,在原來數據的後面,按行插入數據
·insert_rows(idx=數字編號, amount=要插入的行數),插入的行數是在idx行數的下方插入
·insert_cols(idx=數字編號, amount=要插入的列數),插入的位置是在idx列數的左側插入
·delete_rows(idx=數字編號, amount=要刪除的行數)
·delete_cols(idx=數字編號, amount=要刪除的列數)
move_range(「數據區域」,rows=,cols=):正整數為向下或向右、負整數為向左或向上
舉個例子:
openpyxl.styles.Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)
其中,字體顏色中的color是RGB的16進製表示
再者,可以使用for循環,修改多行多列的數據,在這里介紹了獲取的方法
Alignment(horizontal=水平對齊模式,vertical=垂直對齊模式,text_rotation=旋轉角度,wrap_text=是否自動換行)
水平對齊:『distributed』,『justify』,『center』,『left』, 『centerContinuous』,'right,『general』
垂直對齊:『bottom』,『distributed』,『justify』,『center』,『top』
當然,你仍舊可以調用for循環來實現對多行多列的操作
設置行列的寬高:
·row_dimensions[行編號].height = 行高
·column_dimensions[列編號].width = 列寬
合並單元格有下面兩種方法,需要注意的是,如果要合並的格子中有數據,即便python沒有報錯,Excel打開的時候也會報錯。
merge_cells(待合並的格子編號)
merge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)
拆分單元格的方法同上
unmerge_cells(待合並的格子編號)
unmerge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)
create_sheet(「新的sheet名」):創建一個新的sheet表
第11行,使用title修改sheet表的名字
remove(「sheet名」):刪除某個sheet表
要刪除某sheet表,需要激活這個sheet表,即:將其作為活動表(關於活動表的定義請看前面文章開頭寫的有)下面8~11行代碼展示了原始活動表與手動更換活動表,第13行代碼刪掉活動表
背景知識
numpy與pandas
NumPy是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫;pandas 是基於NumPy 的一種工具,該工具是為解決數據分析任務而創建的,我們需要利用Pandas進行Excel的合並
1.下面的代碼生成了一個5行3列的包含15個字元的嵌套列表
(注意,第4行代碼:15是等於35的,如果是15對應43,或者16對應5*3都會報錯)
(注意,第5行代碼,雖然5行3列是15個數據,但是可以指定數據從1開頭,到16結束)
2.添加表頭
使用pandas庫的DataFrame來添加表頭。關於列印的結果,把最左側的一列去掉之後會發現結果很和諧,這是因為最左側的一列代錶行號。此時xx變數的類型是
xlsxwriter模塊一般是和xlrd模塊搭配使用的,
xlsxwriter:負責寫入數據,
xlrd:負責讀取數據。
1.創建一個工作簿
2.創建sheet表
3.寫入數據
D. python使用reportlab合並表格後怎麼在表格內居中
#找到這個table_model設置表格屬性,
def table_model(data):
# 合並表格 ('SPAN',(第一個方格的左上角坐標),(第二個方格的左上角坐標)),合並後的值為靠上一行的值,按照長方形合並
('SPAN',(0,0),(0,1)),
('SPAN',(1,0),(2,0)),
('SPAN',(3,0),(4,0)),
('SPAN',(5,0),(7,0)),
#設置下面兩項
('ALIGN', (0, 0), (-1, -1), 'CENTER'), # 左右居中對齊
('VALIGN', (-1, 0), (-2, 0), 'MIDDLE'), # 垂直居中對齊