我有一个包含多个工作表的 .xlsx 文件,我想将所有工作表拆分为不同的 .xlsx 文件。
例如,我有一个文件 matt.xlsx,它有 5 张纸,名称分别为 A、B、C、D、E。我想将它们分成 5 个文件,命名为 a.xlsx、b.xlsx、c.xlsx、d.xlsx 和 e.xlsx。
我编写的代码如下,但它不会向拆分文件写入任何内容,并且当我尝试打开它们时出现错误,提示“文件格式不匹配”
import os
import csv
from openpyxl import load_workbook
import pandas as pd
def main():
# read wbook from xlsx,
filepath = os.path.join(os.getcwd())
wb = load_workbook(filename='matt.xlsx')
dest_dir = os.path.join('desktop','new files')
os.makedirs(dest_dir, exist_ok=True)
# loop the sheet
for sheet in wb.worksheets:
sheet_names = sheet.title.split(" ")
sheet_names = [x.lower() for x in sheet_names]
dest_path = os.path.join(dest_dir, sheet_names.xlsx')
with open(dest_path, 'w') as f:
writer = pd.ExcelWriter(f, engine='xlsxwriter')
reader = sheet.rows
next(reader, None)
先感谢您。我是一个使用 python 的初学者,如果有人能提供帮助,我将不胜感激。
我修改了你的一些代码。您可以在不使用 pandas 的情况下完成此操作。在浏览了一些之后openpyxl 文档 https://openpyxl.readthedocs.io/en/stable/tutorial.html#看起来下面的代码可能是您想要做的事情的起点。
这会将工作表的值复制到新工作簿,但不复制任何格式等。
看看下面的代码是否是您想要做的事情的起点。
from openpyxl import load_workbook, Workbook
wb = load_workbook(filename='matt.xlsx')
for sheet in wb.worksheets:
new_wb = Workbook()
ws = new_wb.active
for row_data in sheet.iter_rows():
for row_cell in row_data:
ws[row_cell.coordinate].value = row_cell.value
new_wb.save('{0}.xlsx'.format(sheet.title))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)