XML转表格、XML文件批量合并成Excel表格(Python)

import os
import xml.etree.ElementTree as ET
import pandas as pd

folder_path = "C:/xxx/Desktop/2022"  # 替换为你的文件夹路径

# 获取文件夹中的所有文件
file_list = os.listdir(folder_path)

# 创建一个空的DataFrame来存储所有XML文件的数据
all_data = pd.DataFrame()

# 循环处理每个文件
for file_name in file_list:
    if file_name.endswith(".xml"):
        file_path = os.path.join(folder_path, file_name)
       
        # 解析XML文件
        tree = ET.parse(file_path)
        root = tree.getroot()
       
        # 提取XML数据并转换为DataFrame
        xml_data = {}
        for element in root.iter():
            xml_data[element.tag] = element.text
       
        df = pd.DataFrame(xml_data, index=[0])
       
        # 将DataFrame添加到总的数据集中
        all_data = pd.concat([all_data, df], ignore_index=True)

# 将数据保存为Excel文件
excel_file_path = "C:/xxx/Desktop/2022/file.xlsx"  # 替换为你的输出文件路径,如:/path/to/output/file.xlsx
all_data.to_excel(excel_file_path, index=False)

print("转换完成!Excel文件已保存。")

  运行前请确保对应的库装好

 

 

下面是一个相同功能但有进度条的代码,用到tqdm库

import os
import xml.etree.ElementTree as ET
import pandas as pd
from tqdm import tqdm

folder_path = "C:/xxx/2011"  # 替换为你的文件夹路径

# 获取文件夹中的所有文件
file_list = os.listdir(folder_path)

# 创建一个空的DataFrame来存储所有XML文件的数据
all_data = pd.DataFrame()

# 使用tqdm显示进度条
for file_name in tqdm(file_list, desc="Processing files"):
    if file_name.endswith(".xml"):
        file_path = os.path.join(folder_path, file_name)
        
        # 解析XML文件
        tree = ET.parse(file_path)
        root = tree.getroot()
        
        # 提取XML数据并转换为DataFrame
        xml_data = {}
        for element in root.iter():
            xml_data[element.tag] = element.text
        
        df = pd.DataFrame(xml_data, index=[0])
        
        # 将DataFrame添加到总的数据集中
        all_data = pd.concat([all_data, df], ignore_index=True)

# 将数据保存为Excel文件
excel_file_path = "C:/xxx/2011.xlsx"  # 替换为你的输出文件路径,如:/path/to/output/file.xlsx
all_data.to_excel(excel_file_path, index=False)

print("转换完成!Excel文件已保存。")

  

 

 

posted @ 2023-05-25 09:40  Allen8  阅读(1253)  评论(0)    收藏  举报