好的,你希望在指定的文件夹保存分离出来的小表格文件。我们可以通过增加一个参数来指定输出文件的路径,然后在生成文件时使用这个路径。
以下是修改后的代码,让你可以指定输出文件夹:
import openpyxl
import os
def split_excel_sheet_by_empty_row(input_file, output_folder, sheet_name):
wb = openpyxl.load_workbook(input_file)
ws = wb[sheet_name]
table_number = 1
start_row = 1
end_row = 1
max_col = ws.max_column
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, max_col=max_col):
if all(cell.value is None for cell in row): # 判断是否是空行
if start_row < end_row: # 确保有数据
save_small_table(ws, start_row, end_row, max_col, output_folder, table_number)
table_number += 1
start_row = end_row + 1
end_row += 1
# 保存最后一个小表格(如果有)
if start_row < end_row:
save_small_table(ws, start_row, end_row-1, max_col, output_folder, table_number)
def save_small_table(ws, start_row, end_row, max_col, output_folder, table_number):
new_wb = openpyxl.Workbook()
new_ws = new_wb.active
for i, row in enumerate(ws.iter_rows(min_row=start_row, max_row=end_row, max_col=max_col), start=1):
for j, cell in enumerate(row, start=1):
new_ws.cell(row=i, column=j, value=cell.value)
output_file = os.path.join(output_folder, f"output_table_{table_number}.xlsx")
new_wb.save(output_file)
print(f"Saved {output_file}")
# 使用示例
input_file = 'input.xlsx' # 输入文件名
output_folder = r"D:\2024年6月14日周督促会" # 输出文件夹路径
sheet_name = 'Sheet1' # 工作表名称
split_excel_sheet_by_empty_row(input_file, output_folder, sheet_name)
### 重点解释:
1. **添加参数**:
- `output_folder`:指定输出文件夹。
2. **更新路径**:
- 在保存文件时,使用 `os.path.join` 将 `output_folder` 和文件名拼接成完整的路径。这就好像告诉你钓到的鱼应该放到哪个桶里。
3. **使用示例**:
- 修改 `output_folder` 为你希望保存输出文件的路径。
- 确保路径使用了原始字符串(前面加 `r`)或使用双反斜杠(\\)来避免转义字符的问题。
这样修改后,每当你分离出一个小表格,它会被保存到你指定的文件夹里,就像钓到的每条鱼都被放到指定的桶里一样整齐。如果还有其他问题,尽管告诉我,不用客气!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |