鱼C论坛

 找回密码
 立即注册
查看: 1452|回复: 5

[已解决]将excel文件的名称作为一列填充到excel表中

[复制链接]
发表于 2024-1-5 22:47:18 | 显示全部楼层 |阅读模式
10鱼币


如图,将excel文件名称填充为excel表的新的一列。

如果文件内中有很多excel文件都需要进行上述操作,要怎么实现循环呢?
最佳答案
2024-1-5 22:47:19
要将excel文件的名称作为一列填充到excel表中,可以使用Python的pandas库来处理。下面是一个示例代码:
import os
import pandas as pd

# 获取指定文件夹下的所有excel文件名
def get_excel_filenames(folder_path):
    excel_files = []
    for filename in os.listdir(folder_path):
        if filename.endswith(".xlsx") or filename.endswith(".xls"):
            excel_files.append(filename)
    return excel_files

# 将excel文件名添加为新的一列
def add_filename_as_column(excel_file):
    df = pd.read_excel(excel_file)  # 读取excel文件
    filename = os.path.basename(excel_file)  # 获取文件名
    df['文件名'] = filename  # 添加新列
    df.to_excel(excel_file, index=False)  # 保存修改后的excel文件

# 主函数
def main():
    folder_path = "路径/到/文件夹"  # 替换为你的文件夹路径
    excel_files = get_excel_filenames(folder_path)
    for excel_file in excel_files:
        add_filename_as_column(os.path.join(folder_path, excel_file))
    print("文件名添加完成!")

if __name__ == "__main__":
    main()

以上代码中,首先定义了一个`get_excel_filenames`函数,用于获取指定文件夹下的所有excel文件名。然后定义了一个`add_filename_as_column`函数,它接受一个excel文件的路径作为参数,读取该excel文件并添加一个名为"文件名"的新列,值为该文件的文件名。最后,通过循环调用`add_filename_as_column`函数来处理所有的excel文件。

在运行代码之前,要将代码中的`路径/到/文件夹`替换为实际的文件夹路径。

希望这个示例能帮助你解决问题。如果你有任何疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
1.png

最佳答案

查看完整内容

要将excel文件的名称作为一列填充到excel表中,可以使用Python的pandas库来处理。下面是一个示例代码: 以上代码中,首先定义了一个`get_excel_filenames`函数,用于获取指定文件夹下的所有excel文件名。然后定义了一个`add_filename_as_column`函数,它接受一个excel文件的路径作为参数,读取该excel文件并添加一个名为"文件名"的新列,值为该文件的文件名。最后,通过循环调用`add_filename_as_column`函数来处理所有的ex ...

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-5 22:47:19 | 显示全部楼层    本楼为最佳答案   
要将excel文件的名称作为一列填充到excel表中,可以使用Python的pandas库来处理。下面是一个示例代码:
import os
import pandas as pd

# 获取指定文件夹下的所有excel文件名
def get_excel_filenames(folder_path):
    excel_files = []
    for filename in os.listdir(folder_path):
        if filename.endswith(".xlsx") or filename.endswith(".xls"):
            excel_files.append(filename)
    return excel_files

# 将excel文件名添加为新的一列
def add_filename_as_column(excel_file):
    df = pd.read_excel(excel_file)  # 读取excel文件
    filename = os.path.basename(excel_file)  # 获取文件名
    df['文件名'] = filename  # 添加新列
    df.to_excel(excel_file, index=False)  # 保存修改后的excel文件

# 主函数
def main():
    folder_path = "路径/到/文件夹"  # 替换为你的文件夹路径
    excel_files = get_excel_filenames(folder_path)
    for excel_file in excel_files:
        add_filename_as_column(os.path.join(folder_path, excel_file))
    print("文件名添加完成!")

if __name__ == "__main__":
    main()

以上代码中,首先定义了一个`get_excel_filenames`函数,用于获取指定文件夹下的所有excel文件名。然后定义了一个`add_filename_as_column`函数,它接受一个excel文件的路径作为参数,读取该excel文件并添加一个名为"文件名"的新列,值为该文件的文件名。最后,通过循环调用`add_filename_as_column`函数来处理所有的excel文件。

在运行代码之前,要将代码中的`路径/到/文件夹`替换为实际的文件夹路径。

希望这个示例能帮助你解决问题。如果你有任何疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-6 09:50:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-1-6 11:08:44 | 显示全部楼层
import pandas as pd
import os
import re

os.chdir(r'xxx')
file_list = os.listdir('xxx')

# 括号内正则表达式
pattern1 = r'((.*?))'
pattern2 = r'\([^)]*\)'
# 初始化计数
j = 1

for i in file_list:

    # 获取文件名 无xls
    file_name1 = os.path.splitext(os.path.basename(i))[0]
    # 获取文件名 有xls
    file_name2 = file_name1 + '.xls'

    # 读取数据
    firm_info = pd.read_excel(file_name2, skiprows=4, usecols='A:K')
    # 修改数据
    file_name1 = file_name1.replace('股东信息', '')
    file_name1 = re.sub(pattern2, '', file_name1)
    firm_info['序号'] = file_name1

    # 货币种类
    currency = re.search(pattern1, firm_info.columns[6])
    firm_info['货币种类'] = currency.group(1) if currency else None

    # 修改列名
    firm_info.rename(columns={'序号': '企业名称'}, inplace=True)
    firm_info.rename(columns={firm_info.columns[4]: '认缴'}, inplace=True)
    firm_info.rename(columns={firm_info.columns[6]: '实缴'}, inplace=True)

    # 保存结果,路径中的py1需要修改
    firm_info.to_excel(f'xxx/py{j}.xlsx', index=False)

    # 计数变量 jia 1
    j = j + 1

print('Done!')

点评

+++1  发表于 2024-1-6 11:10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-1-6 11:09:28 | 显示全部楼层
小马爱乐容 发表于 2024-1-6 11:08
import pandas as pd
import os
import re

个人改写的答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 22:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表