2016-09-09 5 views
1

Новичок: У меня есть файл Excel, в котором содержится более 100 разных таблиц. Каждый лист содержит несколько таблиц и диаграмм.Python - сохранить различные листы файла excel как отдельные файлы excel

Я хочу сохранить каждый лист в виде нового файла Excel.

Я пробовал много кодов питона, но никто из них не работал.

Просьба помочь в этом. Благодаря!

Edit 1: В réponse на комментарии, это то, что я пробовал:

import pandas as pd 
import xlrd 

inputFile = 'D:\Excel\Complete_data.xlsx' 

#getting sheet names 
xls = xlrd.open_workbook(inputFile, on_demand=True) 
sheet_names = xls.sheet_names() 

path = "D:/Excel/All Files/" 

#create a new excel file for every sheet 
for name in sheet_names: 
     parsing = pd.ExcelFile(inputFile).parse(sheetname = name) 

     #writing data to the new excel file 
     parsing.to_excel(path+str(name)+".xlsx", index=False) 

Чтобы быть точным, проблема приходит в копировании таблиц и диаграмм.

+1

Можете ли вы включить в свой вопрос, что вы пробовали, и что не сработало для вас? –

+0

Я новичок и просто пробовал простой синтаксический анализ с использованием XLRD-модуля. Я не смог получить таблицу или диаграмму в новых файлах Excel. – Aditya

+0

@raderick добавил мой код – Aditya

ответ

2

Я просто работал по этому вопросу так разместим мое решение, я не знаю, как это повлияет на графики и т.д.

import os 
import xlrd 
from xlutils.copy import copy 
import xlwt 

path = #place path where files to split up are 
targetdir = (path + "New_Files/") #where you want your new files 

if not os.path.exists(targetdir): #makes your new directory 
    os.makedirs(targetdir) 

for root,dir,files in os.walk(path, topdown=False): #all the files you want to split 
    xlsfiles=[f for f in files] #can add selection condition here 

for f in xlsfiles: 
    wb = xlrd.open_workbook(os.path.join(root, f), on_demand=True) 
    for sheet in wb.sheets(): #cycles through each sheet in each workbook 
     newwb = copy(wb) #makes a temp copy of that book 
     newwb._Workbook__worksheets = [ worksheet for worksheet in newwb._Workbook__worksheets if worksheet.name == sheet.name ] 
     #brute force, but strips away all other sheets apart from the sheet being looked at 
     newwb.save(targetdir + f.strip(".xls") + sheet.name + ".xls") 
     #saves each sheet as the original file name plus the sheet name 

Не особенно элегантно, но работает хорошо для меня и дает легкую функциональность. Надеюсь, полезно для кого-то.

Смежные вопросы