|
发表于 2024-6-22 16:12:24
|
显示全部楼层
好的,你希望在指定的文件夹保存分离出来的小表格文件。我们可以通过增加一个参数来指定输出文件的路径,然后在生成文件时使用这个路径。
以下是修改后的代码,让你可以指定输出文件夹:
- 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 小助理,如未能正确解答您的问题,请继续追问。 |
|