将具有多个工作表的 xlsx 文件转换为多个 xlsx 文件
Convert a xlsx file with multiple sheets to multiple xlsx files
我有一个包含多个工作表的 .xlsx 文件,我想将所有工作表拆分为不同的 .xlsx 文件。
例如,我有一个文件 matt.xlsx,它有 5 个工作表,名称分别为 A、B、C、D、E。我想将它们分成 5 个文件,分别命名为 a.xlsx、b.xlsx、c.xlsx、d.xlsx 和 e.xlsx.
我写的代码如下,但它不会向拆分文件写入任何内容,并且当我尝试打开它们时出现错误 "Format of the file does not match"
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 documentation 之后,看起来下面的代码可能是您正在尝试做的事情的起点。
这会将工作表的值复制到新工作簿,但 none 格式等
查看以下代码是否是您尝试执行的操作的起点。
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))
如果您确实想使用 pandas,我会推荐如下内容。这将读入您的数据并为工作簿中存在的每个 sheet 创建一个文件。
这是 link 到 10 minutes to pandas tutorial and the documentation for ExcelFile。
import os
import pandas as pd
# create an excel file object
reader = pd.ExcelFile('matt.xlsx')
# loop through all sheet names
for sheet in reader.sheet_names:
#read in data
df = pd.read_excel(path, sheet_name=sheet)
# save data to excel in this location
# '~/desktop/new files/a.xlsx', etc.
df.to_excel(os.path.join('desktop','new files', sheet), index=False)
我有一个包含多个工作表的 .xlsx 文件,我想将所有工作表拆分为不同的 .xlsx 文件。 例如,我有一个文件 matt.xlsx,它有 5 个工作表,名称分别为 A、B、C、D、E。我想将它们分成 5 个文件,分别命名为 a.xlsx、b.xlsx、c.xlsx、d.xlsx 和 e.xlsx.
我写的代码如下,但它不会向拆分文件写入任何内容,并且当我尝试打开它们时出现错误 "Format of the file does not match"
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 documentation 之后,看起来下面的代码可能是您正在尝试做的事情的起点。
这会将工作表的值复制到新工作簿,但 none 格式等
查看以下代码是否是您尝试执行的操作的起点。
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))
如果您确实想使用 pandas,我会推荐如下内容。这将读入您的数据并为工作簿中存在的每个 sheet 创建一个文件。
这是 link 到 10 minutes to pandas tutorial and the documentation for ExcelFile。
import os
import pandas as pd
# create an excel file object
reader = pd.ExcelFile('matt.xlsx')
# loop through all sheet names
for sheet in reader.sheet_names:
#read in data
df = pd.read_excel(path, sheet_name=sheet)
# save data to excel in this location
# '~/desktop/new files/a.xlsx', etc.
df.to_excel(os.path.join('desktop','new files', sheet), index=False)