日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python處理Excel文檔(一)合并Excel工作表

作者:小宋同學-- 更新時間: 2023-12-13 編程語言

一、需求:

合并xlsx文件

二、思路:

  1. 使用openpyxl讀取工作表,用ws.values()方法將讀取數據轉為生成器對象 ;
  2. 將生成器對象轉換為dataframe格式;
  3. 進行合并,存入Excel中。

三、ws.values()方法介紹

(1) ws.values()方法用于獲取工作表中的所有單元格的值。它返回一個生成器對象,每個元素都是一個包含每行單元格值的元組

例如,假設有一個名為"Sheet1"的工作表,包含以下數據:

A | B | C

1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

使用ws.values()方法將返回一個生成器對象,其中每個元素都是包含每行單元格值的元組。可以通過循環遍歷生成器對象來獲取每行的值。

import openpyxl

wb = openpyxl.load_workbook('example.xlsx')
ws = wb['Sheet1']

for row in ws.values():
    print(row)

輸出:

(1, 2, 3)
(4, 5, 6)
(7, 8, 9)

(2) ws.iter_rows()方法用于遍歷工作表的每一行,并返回每行中的單元格對象。它也可以用于獲取每行的值,但需要額外的處理來提取每個單元格的值。

import openpyxl

wb = openpyxl.load_workbook('example.xlsx')
ws = wb['Sheet1']

for row in ws.iter_rows(values_only=True):
    print(row)

輸出:

(1, 2, 3)
(4, 5, 6)
(7, 8, 9)

注:兩個方法區別在于使用ws.values()方法可以直接獲取每行的值作為元組,而ws.iter_rows()方法需要額外的參數和處理來獲取每行的值。

四、實現代碼

代碼文件和xlsx文件放在一個文件夾中。

import time
import glob
import openpyxl
import pandas as pd
import xlsxwriter


t1 = time.time()
files = glob.glob('*.xlsx')
DF_data = pd.DataFrame()
for f in files:
    file = openpyxl.load_workbook(f,read_only=True)        # 讀取每個文件
    ws = file.worksheets[0]                                # 獲取工作簿中第一個表
    data = ws.values
    my_cols = next(data)[:]                                # 獲取首行
    data = list(data)
    df = pd.DataFrame(data,columns = my_cols)
    DF_data = pd.concat([DF_data,df],ignore_index=True)    #忽略首行
print(DF_data.info())

# 數據寫入
writer = pd.ExcelWriter('result.xlsx',engine='xlsxwriter',options={'strings_to_urls':False})
DF_data.to_excel(writer,sheet_name='Sheet1',index=False)         #將DataFrame對象保存為Excel文件。
ws_temp = writer.sheets['Sheet1']
ws_temp.set_column(4,4, 30)  #調整第5列寬,也可不加
writer.close()

t= time.time()-t1
print(f'程序運行時間:{t:.2f}秒')

原文鏈接:https://blog.csdn.net/xue_11/article/details/131611827

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新