excel里面有很多个工作表,怎么用python,给每个表独立出单独的新表,并表名为文件名

excel里面有很多个工作表,怎么用python,给每个表独立出单独的新表,并表名为文件名

你的python版本是什么,我试了一下,是不报错的我的版本是3.5。应该和你的python版本有关系,有可能openpyxl在最新的版本下有bug。

同求大佬!!!

#-*- coding:utf-8 -*-
import pandas as pd

filename = r'输入文件.xlsx'
f = pd.ExcelFile(filename)
for n in f.sheet_names:
    print(n)
    d = pd.read_excel(filename, sheet_name=n)
    d.to_excel(f"{n}.xlsx",index=False,sheet_name=n)

 

或者是

#-*- coding:utf-8 -*-
import pandas as pd

filename = r'输入文件.xlsx'
f = pd.ExcelFile(filename)
for n in f.sheet_names:
    print(n)
    d = f.parse(sheet_name=n)
    d.to_excel(f"{n}.xlsx",index=False,sheet_name=n)

 

import pandas as pd

# 最终生成了一个字典,每个key就是sheet_name,每个value就是对应的表格:
dict_save={}

# 导入自己路径的文件:
test = pd.ExcelFile(r'*/test.xlsx')

# 获取总excel文件所有的sheet名称,存储到list中:
sheet_name=test.sheet_names

# 对每个sheet进行操作:
for i in range(len(sheet_name)):
    cache_pandas = pd.read_excel(r'*/test.xlsx', sheet_name=sheet_name[i])
    dict_save_cache={sheet_name[i]:cache_pandas}
    # 最终得到字典,以后操作可能会用到:
    dict_save.update(dict_save_cache)
    # 每个sheet保存到以sheet名称命名的excel中,并且每个excel的sheet名称不变:
    cache_pandas.to_excel(f'*/{sheet_name[i]}.xlsx',index=False,sheet_name=sheet_name[i])

 

能增加输出路径,文件保留原有格式吗

输出路径这样写

    d.to_excel(f"d:test/{n}.xlsx",index=False,sheet_name=n)

 

原有的表格内容格式能有办法保留吗?

好的,晚上试试

#-*- coding:utf-8 -*-
import openpyxl
filename = r'输入文件.xlsx'
i = 0
while True:
    book = openpyxl.load_workbook(filename)
    li = book.sheetnames
    for j,n in enumerate(li):
        if j != i:
            del book[n]
    book.save(fr"d:test\{li[i]}.xlsx")
    print(li[i])
    i += 1
    if i>=len(li):
        break

 

格式是保留了,但是运行一次分出一个表格,不是一次性全部分完的,而且运行速度很慢@天际的海浪

就是每循环一次分出一个表格啊。多循环几次就行了

我有几十个表,按这个循环的速度和点击,还没有有手动另存为新表快哦

人家帮你解决了问题 你不采纳是真滴坑

不是不采纳,是没有解决问题

可以增加另存为路径吗?