文章目錄
- Python將一個EXCEL表拆分多個excel表
- Python將一個EXCEL表中一個sheet拆分多個sheet表
Python將一個EXCEL表拆分多個excel表
在Python中,你可以使用pandas
庫來讀取Excel文件,并將一個大的Excel表格(工作表)拆分成多個單獨的Excel文件。這通常基于某些條件,比如基于某列的唯一值或者按照行數的固定分割。
以下是一個基于某列唯一值來拆分Excel工作表的示例:
- 首先,你需要安裝
pandas
和openpyxl
(用于讀寫Excel文件):
pip install pandas openpyxl
- 使用Python腳本拆分Excel文件:
import pandas as pd# 讀取原始Excel文件
original_file = 'original.xlsx'
sheet_name = 'Sheet1' # 假設你要拆分的工作表名稱是'Sheet1'
df = pd.read_excel(original_file, sheet_name=sheet_name)# 選擇你要根據哪一列的唯一值來拆分工作表
split_column = 'column_to_split_by' # 替換為你的列名
unique_values = df[split_column].unique()# 遍歷唯一值并保存每個子DataFrame到新的Excel文件
for value in unique_values:# 篩選數據sub_df = df[df[split_column] == value]# 構造新的文件名new_file = f'split_{value}.xlsx'# 寫入新的Excel文件with pd.ExcelWriter(new_file, engine='openpyxl') as writer:sub_df.to_excel(writer, index=False, sheet_name=sheet_name)print(f'Split into {len(unique_values)} files.')
在這個示例中,split_column
是你希望根據其唯一值來拆分工作表的列的名稱。unique_values
是一個包含該列所有唯一值的列表。然后,腳本遍歷這些唯一值,對于每個唯一值,它篩選出原始DataFrame中對應的行,并將這些行保存到一個新的Excel文件中。
請注意,這個示例假設你的原始Excel文件使用的是.xlsx
格式,并且你希望保存拆分后的文件也為.xlsx
格式。此外,如果你需要拆分的工作表不是第一個工作表(即不是’Sheet1’),你需要將sheet_name
變量的值更改為正確的工作表名稱。
如果你想要按照行數的固定分割來拆分工作表(例如,每100行一個文件),你可以稍微修改上面的腳本,使用range(0, len(df), 100)
來迭代行索引,并使用.iloc
來切片DataFrame。
Python將一個EXCEL表中一個sheet拆分多個sheet表
可以使用pandas
結合openpyxl
或xlsxwriter
來實現。但是,由于pandas
的ExcelWriter
在寫入時不支持在同一個Excel文件中添加多個工作表(除非你一次寫入所有工作表),需要使用openpyxl
或xlsxwriter
來手動操作Excel文件。
以下是一個使用pandas
和openpyxl
來拆分一個工作表到多個工作表的示例:
import pandas as pd
from openpyxl import load_workbook# 讀取原始Excel文件
original_file = 'original.xlsx'
sheet_name_to_split = 'Sheet1' # 要拆分的工作表名稱# 使用pandas讀取工作表
df = pd.read_excel(original_file, sheet_name=sheet_name_to_split)# 假設你根據某列的值(例如'group_column')來拆分工作表
# 也可以根據需要使用其他邏輯,比如按行數拆分
groups = df['group_column'].unique()# 加載已存在的Excel文件以添加新的工作表
book = load_workbook(original_file)
writer = pd.ExcelWriter(original_file, engine='openpyxl')
writer.book = book# 遍歷每個組并將數據寫入新的工作表
for group in groups:# 篩選數據sub_df = df[df['group_column'] == group]# 寫入新的工作表,如果工作表已存在則先刪除if group in book.sheetnames:book.remove(book[group])sub_df.to_excel(writer, sheet_name=group, index=False)# 保存Excel文件
writer.save()
在這個示例中,我們首先加載了原始的Excel文件,并使用pandas
讀取了要拆分的工作表。然后,我們根據某個列的唯一值將數據拆分成多個DataFrame
。接下來,我們使用openpyxl
加載原始的Excel工作簿,并遍歷每個組。對于每個組,我們檢查是否存在同名的工作表,如果存在則刪除它,然后將篩選后的數據寫入新的工作表。最后,我們保存了修改后的Excel文件。
請注意,這個示例會直接修改原始的Excel文件。如果你不希望修改原始文件,你可以將結果保存到一個新的Excel文件中。此外,如果你的數據量很大,或者拆分后的工作表很多,這個操作可能會比較耗時,因為它需要在內存中處理整個Excel文件。