电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python openpyxl 帶格式復制表格的實現

瀏覽:95日期:2022-06-25 10:20:30

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

再從新表中合并單元格

再用.has_style: #拷貝格式 測試是否有格式,再復制格式和數據

其中:

font(字體類):字號、字體顏色、下劃線等

fill(填充類):顏色等

border(邊框類):設置單元格邊框

alignment(位置類):對齊方式

number_format(格式類):數據格式

protection(保護類):寫保護

import os#找文件目錄import win32com.client as win32 #操作excel文件from tqdm import tqdm #進度條顯示from openpyxl import load_workbook # 讀取時導入這個from openpyxl.styles import Font, Alignment #設置單元格格式from openpyxl.utils import get_column_letter, column_index_from_stringfrom openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Fontfrom copy import copypath=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=’原始數據.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轉為xlsx:1 xlsx轉為xls:2 ')if choose=='1':with tqdm(total=len(xls_lists),desc=’寫文件數 ’,leave=True,unit=’個’,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 extensionwb.Close()#FileFormat = 56 is for .xls extensionpbar.close()else:with tqdm(total=len(xls_lists),desc=’寫文件數 ’,leave=True,unit=’個’,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 extensionwb.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) #能寫入已存在表中wb = load_workbook(’原始數據.xlsx’)for sheet in wb.sheetnames:print(sheet)wbsheet=wb[sheet]for num in range(3):name=wbsheet.cell(1,num*15+10).valuewbsheet_new = book.create_sheet(name,0)wm=list(wbsheet.merged_cells) #開始處理合并單元格形式為“(<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)].widthwbsheet_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()

上例中,因為要把一個表拆分為三個,所以要循環三次

補充:python-excel 之帶有格式及合并單元格樣式的表格復制

代碼如下:

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] # 兩個for循環遍歷整個excel的單元格內容 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)代碼說明:

文件內容是從down_excel的down_sheetname復制到totle_excel的totle_sheetname

說明:

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

注意:

如果你是跨excel文件的復制且帶有公式,不建議使用

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | BHK汞灯-百科|上海熙浩实业有限公司 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 钢骨架轻型板_膨石轻型板_钢骨架轻型板价格_恒道新材料 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | OpenI 启智 新一代人工智能开源开放平台 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂| 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 造价工程师网,考试时间查询,报名入口信息-网站首页 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 蜗轮丝杆升降机-螺旋升降机-丝杠升降机厂家-润驰传动 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 |