日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openpyxl库,1秒合并多张表格并设置图表格式

發布時間:2024/9/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openpyxl库,1秒合并多张表格并设置图表格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在日常辦公中,我們經常有這樣的需求,需要重復的合并表格數據,如果數據表不多,通常復制粘貼就足夠了,要是有成百上千的表格需要合并,普通的Ctrl+C、Ctrl+V已經難以實現,那么就要考慮用代碼去合并。

這里給大家介紹兩個Python庫,用于表格的數據合并,以及解決代碼合并后,圖表樣式固定的問題,第一個OS庫,用于遍歷文件目錄,第二個openpyxl庫用來操作表格,下面逐一介紹這兩個庫的功能。

OS模塊

這里先介紹OS模塊的功能,因為在調用的時候,涉及的參數不多,通常都只有一行代碼,總結常用的功能如下。

os.getcwd()

得到當前工作目錄,即當前Python腳本工作的目錄路徑。

os.listdir()

返回指定目錄下的所有文件和目錄名。

os.remove()

用來刪除一個文件。

os.removedirs(r”c:\python”)

刪除多個目錄。

os.path.isfile()

檢驗給出的路徑是否是一個文件。

os.path.isdir()

檢驗給出的路徑是否是一個目錄。

os.path.exists()

檢驗給出的路徑是否真地存在。

os.path.dirname()

獲取路徑名。

os.path.abspath()

獲得絕對路徑。

os.path.basename()

獲取文件名。

os.system()

運行shell命令。

os.rename(old,new)

重命名。

os.makedirs(r”c:\python\test”)

創建多級目錄。

os.mkdir(“test”)

創建單個目錄。

os.stat(file)

獲取文件屬性。

os.path.getsize(filename)

獲取文件大小。

openpyxl模塊

openpyxl庫用于操作表格,功能包括新建一個空的表格、給表格添加數據、導入數據表、遍歷數據表內容、合并多個表格以及修改單元格格式等。

創建一個空的表格

如何使用python創建一個空的表格,這里使用openpyxl庫,包含創建表格,更改表名以及保存空表。

from openpyxl import Workbook #創建表格 wb=Workbook()#獲取當前active的sheet sheet=wb.active#查看sheet名 sheet.title#改sheet名 sheet.title="表格一"#保存表 wb.save(r"C:\Users\尚天強\Desktop\測試.xlsx")

通過上面的代碼,我們成功在桌面新建了一個名叫測試的工作簿,里面有一張名叫表格一的sheet表。

打開已經存在目錄中的表

除了新建一張空的表,還可以使用命令打開已經存在的表格數據。

#打開一個存在的表 from?openpyxl?import?load_workbook wb2=load_workbook(r"C:\Users\尚天強\Desktop\2017年銷售明細\銷售明細第1季度.xlsx"")

向表格中寫入數據

向空表中寫入數據有三種方式,可以依次向單元格填寫,也可以按照附加行的方式進行填寫,填寫的效果如下所示。

from openpyxl import Workbook import datetime #創建表格 wb=Workbook() #獲取當前active的sheet sheet=wb.active#方式一:數據可以直接分配到單元格中(可以輸入公式) sheet["A1"]="李明" sheet["B2"]="小紅" sheet["C3"]="小王"#方式二:可以附加行,從第一列開始附加(從最下方空白處,最左開始)(可以輸入多行) sheet.append(["張三","李四","王五"])#方式三:Python類型會被自動轉換 sheet["A5"]=datetime.datetime.now().strftime("%Y-%m-%d")#保存表 wb.save(r"C:\Users\尚天強\Desktop\測試.xlsx")

獲取已有表格中的數據

要打開一張表,可以先查看這張表的所有sheet名,對sheet賦值,然后獲取對應的值,這里得出一月這張表中A1單元格中的值。

from openpyxl import load_workbook wb2=load_workbook(r"C:\Users\尚天強\Desktop\2017年銷售明細\銷售明細第1季度.xlsx")#查看sheet名 wb2.sheetnames#獲取一月這張表 sheet=wb2.get_sheet_by_name("一月")#查看第一張表中A1單元格中的值 sheet["A1"].value'銷售日期'

借助for循環導入A1到A5單元格中的值。

#打印一列值 for cell in sheet["A1:A5"]:print(cell[0].value)

導入全部數據

如果要導入單元格中的全部數據,需要先遍歷所有的行,然后遍歷所有的單元格,數據導入結果如下所示。

#打印全部值 for row in sheet:for cell in row:print(cell.value,end=",")print()#換行

導入指定行數據

指定導入數據的行數和列數,這里限定導入前五行和前五列數據,數據結果如下所示。

#遍歷指定行,第1行開始至第5行,每行打印5列 for row in sheet.iter_rows(min_row=0,max_row=5,max_col=5):for cell in row:print(cell.value,end=",")print()

導入全部列數據

導入全部的列數據,需要先遍歷所有的列,然后遍歷所有的單元格,數據導入結果如下。

#遍歷全部列 for column in sheet.columns:for cell in column:print(cell.value,end=",")print()

導入指定列數據

導入指定的列數據,在參數中限定最小和最大列數,以及最小和最大行數,數據導入結果如下所示。

#遍歷指定幾列的數據 for col in sheet.iter_cols(min_col=2,max_col=5,min_row=3,max_row=5):for i in col:print(i.value,end=",")print()

刪除工作表

若要刪除工作表,有remove和del兩種方式。

#刪除工作表 #方式一 wb.remove(sheet)#方式二 del wb[sheet]

設置表格樣式

設置表格的樣式,通常會設置表格的字體、字號大小、顏色、表格邊框、行高、列寬、字體位置等,這部分的參數設置較為瑣碎,這里舉例常用的幾個參數設置,結果如下所示。

#導入包 from openpyxl.styles import Font,colors,Alignment,Border,Side from openpyxl import load_workbookwb=load_workbook(r"C:\Users\尚天強\Desktop\測試.xlsx")#獲取當前active的sheet sheet=wb.active#設置字體樣式 sheet['A1'].font=Font(name='微軟雅黑',size=10,italic=False,color=colors.BLUE,bold=True)#設置A1中的數據垂直居中和水平居中 sheet['A1'].alignment=Alignment(horizontal='center',vertical='center')#第2行行高 sheet.row_dimensions[2].height=15#C列列寬 sheet.column_dimensions["C"].width=20#設置邊框 border=Border(left=Side(border_style='medium',color=colors.BLACK),right=Side(border_style='medium',color=colors.BLACK),top=Side(border_style='medium',color=colors.BLACK),?bottom=Side(border_style='medium',color=colors.BLACK),?diagonal=Side(border_style='medium',color=colors.BLACK),?diagonal_direction=0,?outline=Side(border_style='medium',color=colors.BLACK),vertical=Side(border_style='medium',color=colors.BLACK),?horizontal=Side(border_style='medium',color=colors.BLACK))??????????????sheet["B4"].border=border???#保存表 wb.save(r"C:\Users\尚天強\Desktop\測試.xlsx")

分析實例

以上部分,逐一介紹了openpyxl部分庫的功能,下面舉一個實例進行表格的合并以及格式的設置,如下是2017年的銷售明細,包含2017年4個季度的銷售數據明細。

且每一個季度銷售數據里又包含三個月的具體明細,現在需要批量合并4個工作簿,共計12張表,使用Ctrl+C、Ctrl+V功能已經不能很好的解決這里的問題,需要用代碼解決。

這里首先使用os庫,循環遍歷該文件下的目錄,使用openpyxl庫循環遍歷單元格中的數據,并且導入,合并結果如下,共計合并14283行記錄。

from openpyxl import Workbook,load_workbook import osdef concat_data(file_path,save_path):files_name=os.listdir(file_path)#創建新表格new_wb=Workbook()new_ws=new_wb.activeheader=['銷售日期', '員工工號', '銷售員', '貨號', '銷售單編號', '銷量', '銷售額']new_ws.append(header)#向新的表格寫入數據for file_name in files_name:wb=load_workbook(file_path+"\\"+file_name)for sheet in wb.sheetnames:ws=wb[sheet]for row in ws.iter_rows(min_row=2,values_only=True):new_ws.append(row)#數據保存new_wb.save(save_path+"\\"+"數據合并.xlsx")concat_data(r"C:\Users\尚天強\Desktop\2017年銷售明細",r"C:\Users\尚天強\Desktop")

同時給表格設置固定的圖表樣式,其中的單元格屬性值可以直接進行修改。

from openpyxl import Workbook,load_workbook from openpyxl.styles import Font,PatternFill,Alignment,Border,fills,colors,Side#導入表格數據 wb=load_workbook(r"C:\Users\尚天強\Desktop\數據合并.xlsx")#操作單元格 ws=wb.active#調整列寬 ws.column_dimensions["A"].width=25 ws.column_dimensions["B"].width=10 ws.column_dimensions["C"].width=10 ws.column_dimensions["D"].width=13 ws.column_dimensions["E"].width=35 ws.column_dimensions["F"].width=8 ws.column_dimensions["G"].width=10#設置單元格格式 #設置字體格式 font=Font("微軟雅黑",size=12,color=colors.BLACK,bold=False)#單元格顏色填充 fill=PatternFill(fill_type="solid",start_color="CDCDCD",end_color="CDCDCD") #CDCDCD淺灰色#單元格對齊方式 alignment=Alignment(horizontal="center",vertical="center",indent=0) #wrap_text=True文字換行,shrink_to_fit=True自適應寬度#單元格邊框 bd=Border(left=Side(border_style="thin",color=colors.BLACK),right=Side(border_style="thin",color=colors.BLACK),top=Side(border_style="thin",color=colors.BLACK),bottom=Side(border_style="thin",color=colors.BLACK),outline=Side(border_style="thin",color=colors.BLACK),vertical=Side(border_style="thin",color=colors.BLACK),horizontal=Side(border_style="thin",color=colors.BLACK))#遍歷數據 for irow,row in enumerate(ws.rows,start=1):font=fontfill=fillalignment=alignmentborder=bdfor cell in row:cell.font=fontcell.fill=fillcell.alignment=alignmentcell.border=bd#設置表頭字體格式 ft=Font("宋體",size=12,color=colors.BLUE,bold=True)#italic=True斜體 ws["A1"].font=ft ws["B1"].font=ft ws["C1"].font=ft ws["D1"].font=ft ws["E1"].font=ft ws["F1"].font=ft ws["G1"].font=ft#保存數據 wb.save(r"C:\Users\尚天強\Desktop\[格式調整]數據合并.xlsx")


各位伙伴們好,詹帥本帥假期搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)

推薦閱讀

牛逼!Python常用數據類型的基本操作(長文系列第①篇)

牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)

牛逼!Python函數和文件操作(長文系列第③篇)

牛逼!Python錯誤、異常和模塊(長文系列第④篇)

總結

以上是生活随笔為你收集整理的openpyxl库,1秒合并多张表格并设置图表格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美 亚洲 一区 | 国产精品久久久无码一区 | 成人在线一区二区 | 米奇久久 | 日韩中文字幕一区 | 丁五月| 亚洲卡一卡二 | a天堂视频在线观看 | 那里可以看毛片 | 中国免费观看的视频 | 久久99久久久久 | 三年中文在线观看中文版 | 国产精品50页| 少妇光屁股影院 | 久久老女人 | 午夜777| 亚洲欧洲自拍 | 九色在线 | 亚洲欧美强伦一区二区 | 日韩一级片在线观看 | 97超碰总站 | 四虎视频国产精品免费入口 | 成人激情在线观看 | 欧洲精品一区二区三区久久 | 免费观看h片 | 亚欧洲精品视频 | 久久国产福利一区 | 亚洲视频在线一区 | 国产成人亚洲综合 | 亚洲AV无码成人精品国产一区 | 黄色aa毛片 | 欧美人与禽猛交乱配 | 九九精品国产 | 激情欧美亚洲 | 国产精品99久久免费黑人人妻 | 亚洲色图一区二区三区 | 调教撅屁股啪调教打臀缝av | 亚洲av人人澡人人爽人人夜夜 | www.jizzjizz | 动漫3d精品一区二区三区乱码 | 亚洲精品久久一区二区三区777 | 精品国产人妻一区二区三区 | 69av片| 国产另类av| 欧美在线播放 | 香蕉视频最新网址 | 日韩福利| 壮汉被书生c到合不拢腿 | 午夜影院啊啊啊 | 亚洲奶汁xxxx哺乳期 | 久久爱综合 | 国产无码精品合集 | 中文字幕超碰在线 | 国产啊v在线 | 久久黄色免费视频 | 亚洲成a人片 | 国产系列在线 | 乳色吐息免费看 | 一卡二卡在线视频 | 精品国产一区二区三区四 | 大香焦久久 | 国内自拍视频在线观看 | 国产情侣一区二区三区 | 91视频综合网 | 欧美极品jizzhd欧美仙踪林 | 蜜桃传媒一区二区亚洲 | av在线官网 | 国产女人高潮的av毛片 | 不卡影院av | 久久久成人免费视频 | 国产一级影院 | 大尺码肥胖女系列av | 六月丁香综合 | 国产精品视频在线观看 | 国产精品国语对白 | 精品久久久久久久无码 | 国产区在线看 | 亚洲av无码乱码国产精品fc2 | 久操视频免费在线观看 | 日韩99 | 六月婷婷综合 | 日本老太婆做爰视频 | 国产性一乱一性一伧一色 | 亚洲综合欧美日韩 | 国产人妻777人伦精品hd | 国产第一页在线观看 | 男插女青青影院 | 久久久999| 在线看黄色网 | 日日躁夜夜躁aaaabbbb | 午夜精品久久久久 | 国产九色在线 | 日韩精品xxx| 国产一区二区三区欧美 | 少妇高潮喷水在线观看 | 日韩av午夜 | 国产私人影院 | 国产精品成人免费一区久久羞羞 | 日本少妇性生活 |