最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python openpyxl 帶格式復(fù)制表格的實(shí)現(xiàn)

 更新時(shí)間:2021年03月12日 14:22:45   作者:weixin_45903952  
這篇文章主要介紹了python openpyxl 帶格式復(fù)制表格的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

有合并單元格的,先把合并單元格復(fù)制過(guò)去,合并單元格用wm=list(zip(wbsheet.merged_cells))得出合并單元格列表,把其中的(<CellRange A1:A4>,) 替換成為A1:A4格式

再?gòu)男卤碇泻喜卧?/p>

再用.has_style: #拷貝格式 測(cè)試是否有格式,再?gòu)?fù)制格式和數(shù)據(jù)

其中:

font(字體類(lèi)):字號(hào)、字體顏色、下劃線等

fill(填充類(lèi)):顏色等

border(邊框類(lèi)):設(shè)置單元格邊框

alignment(位置類(lèi)):對(duì)齊方式

number_format(格式類(lèi)):數(shù)據(jù)格式

protection(保護(hù)類(lèi)):寫(xiě)保護(hù)

import os							#找文件目錄
import win32com.client as win32 	#操作excel文件
from tqdm import tqdm 				#進(jìn)度條顯示
from openpyxl import load_workbook # 讀取時(shí)導(dǎo)入這個(gè)
from openpyxl.styles import Font, Alignment #設(shè)置單元格格式
from openpyxl.utils import get_column_letter, column_index_from_string
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
from copy import copy
path=input('輸入整理前原始路徑: ')
if path=="":
	path=os.getcwd()
xlsx_lists=[]
xls_lists=[]
for file in os.listdir(path):
 filename=os.path.join(path,file)
 if os.path.isfile(filename):    #是目錄
  if filename.endswith(".xls"):
  	xls_lists.append(filename)
  if filename.endswith(".xlsx"):
  	xlsx_lists.append(filename)
source_file='原始數(shù)據(jù).xlsx'
if os.path.exists(os.path.join(os.getcwd(),source_file)):
	os.remove(os.path.join(os.getcwd(),source_file))
choose="1"
excel = win32.gencache.EnsureDispatch('Excel.Application')
# while choose not in "1|2":
#  choose =input("xls轉(zhuǎn)為xlsx:1 xlsx轉(zhuǎn)為xls:2 ")
if choose=="1":
	with tqdm(total=len(xls_lists),desc='寫(xiě)文件數(shù) ',leave=True,unit='個(gè)',unit_scale=True,mininterval=0.5,bar_format=None) as pbar:
		for xls_list in xls_lists:
			pbar.update(1)
			wb = excel.Workbooks.Open(xls_list)
			wb.SaveAs(xls_list+"x", FileFormat = 51) #FileFormat = 51 is for .xlsx extension
			wb.Close()        #FileFormat = 56 is for .xls extension
		pbar.close()
else:
	with tqdm(total=len(xls_lists),desc='寫(xiě)文件數(shù) ',leave=True,unit='個(gè)',unit_scale=True,mininterval=0.5,bar_format=None) as pbar:
		for xlsx_list in xlsx_lists:
			pbar.update(1)
			wb = excel.Workbooks.Open(xlsx_list)
			wb.SaveAs(xlsx_list[0:len(xlsx_list)-1], FileFormat = 56) #FileFormat = 51 is for .xlsx extension
			wb.Close() 
		pbar.close()
excel.Application.Quit()
tag_file='拆分后表.xlsx'
totaldata=pd.DataFrame()
writer=pd.ExcelWriter(tag_file)
totaldata.to_excel(writer, 'sheet')
writer.save()
book = load_workbook(tag_file)   #能寫(xiě)入已存在表中
wb = load_workbook('原始數(shù)據(jù).xlsx')
for sheet in wb.sheetnames:
	print(sheet)
	wbsheet=wb[sheet]
	for num in range(3):
		name=wbsheet.cell(1,num*15+10).value
		wbsheet_new = book.create_sheet(name,0)
		wm=list(wbsheet.merged_cells) #開(kāi)始處理合并單元格形式為“(<CellRange A1:A4>,),替換掉(<CellRange 和 >,)' 找到合并單元格
		#print (list(wm))
		if len(wm)>0 :
			for i in range(0,len(wm)):
				cell2=str(wm[i]).replace('(<CellRange ','').replace('>,)','')
				#print("MergeCell : %s" % cell2)
				wbsheet_new.merge_cells(cell2)
		for rows in range(40):
			wbsheet_new.row_dimensions[rows+1].height = wbsheet.row_dimensions[rows+1].height 
			for col in range(14):
				wbsheet_new.column_dimensions[get_column_letter(col+1)].width = wbsheet.column_dimensions[get_column_letter(col+1)].width
				wbsheet_new.cell(row=rows+1,column=col+1,value=wbsheet.cell(rows+1,num*15+col+1).value)
				if wbsheet.cell(rows+1,num*15+col+1).has_style:	#拷貝格式
					wbsheet_new.cell(row=rows+1,column=col+1).font = copy(wbsheet.cell(rows+1,num*15+col+1).font)
					wbsheet_new.cell(row=rows+1,column=col+1).border = copy(wbsheet.cell(rows+1,num*15+col+1).border)
					wbsheet_new.cell(row=rows+1,column=col+1).fill = copy(wbsheet.cell(rows+1,num*15+col+1).fill)
					wbsheet_new.cell(row=rows+1,column=col+1).number_format = copy(wbsheet.cell(rows+1,num*15+col+1).number_format)
					wbsheet_new.cell(row=rows+1,column=col+1).protection = copy(wbsheet.cell(rows+1,num*15+col+1).protection)
					wbsheet_new.cell(row=rows+1,column=col+1).alignment = copy(wbsheet.cell(rows+1,num*15+col+1).alignment)
wb.close()
book.save('拆分后表.xlsx')
book.close()

上例中,因?yàn)橐岩粋€(gè)表拆分為三個(gè),所以要循環(huán)三次

補(bǔ)充:python-excel 之帶有格式及合并單元格樣式的表格復(fù)制

代碼如下:

from openpyxl import load_workbook
 
 
def copy_excel(totle_excel,totle_sheetname,down_excel,down_sheetname):
 down = load_workbook(down_excel)
 totle = load_workbook(totle_excel)
 totle_sheet = totle[totle_sheetname]
 down_sheet = down[down_sheetname]
 # 兩個(gè)for循環(huán)遍歷整個(gè)excel的單元格內(nèi)容
 for i, row in enumerate(down_sheet.iter_rows()):
  for j, cell in enumerate(row):
   totle_sheet.cell(row=i + 1, column=j + 1, value=cell.value)
 totle.save(totle_excel)

代碼說(shuō)明:

文件內(nèi)容是從down_excel的down_sheetname復(fù)制到totle_excel的totle_sheetname

說(shuō)明:

以上代碼可以將格式以及合并單元格的樣式均復(fù)制到另一張表

注意:

如果你是跨excel文件的復(fù)制且?guī)в泄剑唤ㄗh使用

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

相關(guān)文章

最新評(píng)論

连城县| 公安县| 吉首市| 清河县| 阆中市| 巴彦县| 通道| 柯坪县| 集贤县| 余庆县| 嘉荫县| 新晃| 宝兴县| 开化县| 色达县| 新龙县| 曲水县| 江都市| 吐鲁番市| 奈曼旗| 大渡口区| 泾源县| 陵水| 昭平县| 浏阳市| 微山县| 广东省| 依安县| 郁南县| 乌兰察布市| 弥渡县| 新乐市| 上林县| 焉耆| 凌云县| 合阳县| 祁阳县| 苍南县| 余江县| 桃园县| 通化县|