如何用VBA或C#实现特定结构CSV转XML?求实现示例
将CSV转换为XML:多Level对应全Position的实现方案
需求明确
先拆解你的输入内容:
- Level集合:
1, 2, 49, 50, 51 - Position集合:
8455, 8930, 9405, 9880, 10355, 11015, 11490, 11965, 12440, 12915, 13575, 14050, 14525, 15000
核心要求:每个Level节点下都包含所有Position值,生成符合结构的XML。
快速实现方案(Python脚本)
用Python写个简单脚本就能搞定,逻辑清晰易修改:
# 输入你的CSV内容 raw_csv = """level;1;2;49;50;51; Position;8455;8930;9405;9880;10355;11015;11490;11965;12440;12915;13575;14050;14525;15000""" # 解析CSV行,过滤空内容 lines = [line.strip() for line in raw_csv.split('\n') if line.strip()] # 提取Level列表 level_items = [item for item in lines[0].split(';') if item and item != 'level'] # 提取Position列表 pos_items = [item for item in lines[1].split(';') if item and item != 'Position'] # 生成XML内容 xml_result = '<?xml version="1.0" encoding="UTF-8"?>\n<root>\n' for level in level_items: xml_result += f' <level value="{level}">\n' for pos in pos_items: xml_result += f' <position>{pos}</position>\n' xml_result += ' </level>\n' xml_result += '</root>' # 输出结果(也可以写入文件) print(xml_result)
最终XML示例
运行脚本后会生成如下结构的XML(完整版本会包含所有Level和对应的全部Position):
<?xml version="1.0" encoding="UTF-8"?> <root> <level value="1"> <position>8455</position> <position>8930</position> <position>9405</position> <position>9880</position> <position>10355</position> <position>11015</position> <position>11490</position> <position>11965</position> <position>12440</position> <position>12915</position> <position>13575</position> <position>14050</position> <position>14525</position> <position>15000</position> </level> <level value="2"> <position>8455</position> <position>8930</position> <!-- 剩余Position节点与上方一致,完整输出会全部列出 --> <position>15000</position> </level> <level value="49"> <!-- 结构同上 --> </level> <level value="50"> <!-- 结构同上 --> </level> <level value="51"> <!-- 结构同上 --> </level> </root>
无代码替代方案
如果不想写脚本,用Excel也能实现:
- 用Power Query的「交叉连接」功能,生成Level和Position的所有组合
- 用公式生成XML片段:
="<level value="""&A2&"""><position>"&B2&"</position></level>" - 手动拼接XML头部、根节点和所有生成的片段即可
内容的提问来源于stack exchange,提问作者Botez Adrian
相关产品推荐
相关产品推荐

