Python全自动实现Excel数据分列

 更新时间:2026年04月13日 08:39:19   作者:Eiceblue  
在 Excel 数据处理中,数据分列是高频刚需操作,本文将使用免费 Excel 处理库,通过 Python 实现全自动单列拆分多列,并对比 Excel 自带分列与 VBA 方案,帮你快速选出最合适的处理方式

在 Excel 数据处理中,数据分列是高频刚需操作 — 把单列里用逗号、空格、竖线等分隔符拼接的文本,拆成多列独立字段。

手动用 Excel 分列效率低,大批量数据还容易出错;用 VBA 又受平台限制。本文用免费 Excel 处理库,通过 Python 实现全自动单列拆分多列,并对比 Excel 自带分列与 VBA 方案,帮你快速选出最合适的处理方式。

一、先看传统方案:Excel 自带分列与 VBA

在使用 Python 之前,先简单对比两种 Excel 原生方法,方便你根据场景选择。

1. Excel “分列” 向导

  • 操作步骤:选中目标列 →「数据」→「分列」→ 按分隔符或固定宽度拆分。
  • 优点:无需代码,上手简单,直观易用
  • 缺点:纯手动操作,数据更新后必须重复执行,无法自动化批量处理

 Excel “分列” 向导

2. VBA 宏代码

通过 VBA 调用 Split 函数实现自动拆分,示例代码:

Sub SplitColumn()
    Dim rng As Range, cell As Range
    Dim splitArr() As String
    Dim i As Integer
    ' 指定处理 A 列所有有数据的行
    Set rng = Range("A1", Range("A" & Rows.Count).End(xlUp))
    For Each cell In rng
        ' 按逗号分割
        splitArr = Split(cell.Value, ",")
        ' 写入右侧对应列
        For i = LBound(splitArr) To UBound(splitArr)
            cell.Offset(0, i + 1).Value = Trim(splitArr(i))
        Next i
    Next cell
    ' 自动适配列宽
    Columns("B:" & Chr(64 + UBound(splitArr) + 2)).AutoFit
End Sub
  • 优点:可自动化执行,处理速度快,与 Excel 高度集成
  • 缺点:依赖 Windows + Excel 环境,跨平台无法使用,有一定学习成本

VBA 宏代码

两种方案更适合临时处理或纯 Excel 环境。如果需要跨平台、无 Excel 依赖、批量自动化,推荐使用下面的 Free Spire.XLS for Python 方案。

二、Python 将 Excel 中的单列数据拆分为多列

1. 安装依赖库

在终端或命令提示符中执行以下命令,安装免费的 Excel 处理库 Free Spire.XLS for Python:

pip install Spire.Xls.Free

该库不依赖 Excel 应用程序,使用时注意查看限制。

2. 基础分列代码

以下代码实现:读取 Excel 文件 → 将第一列按逗号拆分 → 拆分结果写入右侧列 → 保存新文件。

from spire.xls import *

# 1. 加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("数据.xlsx")

# 2. 获取第一个工作表
sheet = workbook.Worksheets[0]

# 3. 遍历所有有效数据行
for i in range(sheet.LastRow):
    # 读取第 1 列内容
    cell_text = sheet.Range[i + 1, 1].Text
    
    # 按逗号拆分(可改为空格、分号、竖线等)
    split_parts = cell_text.split(',')
    
    # 从第 2 列开始写入拆分后的数据
    for j, value in enumerate(split_parts):
        sheet.Range[i + 1, j + 2].Text = value.strip()

# 4. 保存结果文件
workbook.SaveToFile("数据分列.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

3. 代码详解

  • sheet.LastRow:自动获取最后非空行,无需手动指定范围。
  • split(separator):按分隔符拆分字符串。
  • strip():去除每个子项的前后空格,保证数据干净。
  • sheet.Range[row+1, col+2].Text:从第 2 列(索引 2)开始写入,保留原第 1 列数据。
  • Dispose():释放资源,防止内存泄漏。

运行效果:执行后生成 数据分列.xlsx,原 A 列保留,拆分后的数据依次填入 B、C、D… 列。

代码详解

三、进阶用法:动态分隔符(正则表达式)

实际数据中可能混杂逗号、分号、空格等多种分隔符(例如 “苹果, 香蕉; 橙子 葡萄”)。此时可使用正则表达式统一拆分。

import re
from spire.xls import *

workbook = Workbook()
workbook.LoadFromFile("Data.xlsx")
sheet = workbook.Worksheets[0]

for i in range(sheet.LastRow):
    original_text = sheet.Range[i + 1, 1].Text
    # 按逗号、分号、空格拆分,支持连续分隔符
    parts = re.split(r'[,; ]+', original_text.strip())
    
    # 写入拆分结果
    for j, val in enumerate(parts):
        sheet.Range[i + 1, j + 2].Text = val

sheet.AllocatedRange.AutoFitColumns()
workbook.SaveToFile("MultiSeparatorSplit.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

提示:可根据需要修改正则表达式,例如添加 \|(竖线)、\t(制表符)等。

四、方案选择建议

  • 临时/少量数据:直接用 Excel 自带分列向导,快速完成
  • 重复执行、仅 Windows 环境:使用 VBA 宏,与 Excel 无缝配合
  • 批量自动化、跨平台、无 Excel 依赖:选用 Free Spire.XLS for Python,代码简洁、样式保留、稳定性强

到此这篇关于Python全自动实现Excel数据分列的文章就介绍到这了,更多相关Python Excel数据分列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 身份证OCR识别API接入实例详解(Python / Java 示例)

    身份证OCR识别API接入实例详解(Python / Java 示例)

    OCR技术是一种通过扫描、拍照等光学输入方式将各种印刷品上的文字转化为图像信息,再利用文字识别技术将图像信息转化为可使用的计算机输入技术的过程,这篇文章主要介绍了身份证OCR识别API接入的相关资料,文中以Python/Java为例,需要的朋友可以参考下
    2026-04-04
  • 火车票抢票python代码公开揭秘!

    火车票抢票python代码公开揭秘!

    火车票抢票python代码公开揭秘!使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Keras—embedding嵌入层的用法详解

    Keras—embedding嵌入层的用法详解

    这篇文章主要介绍了Keras—embedding嵌入层的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python开发文字版密室逃脱游戏的实例(含代码)

    Python开发文字版密室逃脱游戏的实例(含代码)

    密室逃脱游戏是一种颇受欢迎的解谜类游戏,玩家通常需要通过观察、推理、合作等方式解决一系列难题,以逃脱困境,在这篇博文中,我们将使用Python开发一个文字版密室逃脱游戏,旨在通过简单的文本交互来呈现游戏的趣味性与挑战性
    2025-04-04
  • pandas交换行的具体实现

    pandas交换行的具体实现

    Pandas 是专注于表格数据处理的 Python 第三方库,能帮助我们完成各种各样的表格数据操作,本文主要介绍了pandas交换行的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • 解决Python传递中文参数的问题

    解决Python传递中文参数的问题

    这篇文章主要介绍了解决Python传递中文参数的问题的相关资料,需要的朋友可以参考下
    2015-08-08
  • pyspark自定义UDAF函数调用报错问题解决

    pyspark自定义UDAF函数调用报错问题解决

    这篇文章主要为大家介绍了pyspark自定义UDAF函数调用报错问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python中的shape[0]、shape[1]和shape[-1]使用方法

    Python中的shape[0]、shape[1]和shape[-1]使用方法

    shape函数是Numpy中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度,这篇文章主要介绍了Python中的shape[0]、shape[1]和shape[-1]使用方法,需要的朋友可以参考下
    2023-07-07
  • 教你在pycharm中使用tensorflow的方法

    教你在pycharm中使用tensorflow的方法

    当前使用的是anaconda的3.8版本,无法正常下载tensorflow包,需要构建虚拟环境使用3.7及以下的解释器才可以,如何解决这个问题呢,下面小编给大家带来了如何在pycharm中使用tensorflow,感兴趣的朋友参考下吧
    2021-11-11
  • Python实现将内容写入文件的五种方法总结

    Python实现将内容写入文件的五种方法总结

    本篇带你详细看一下python将内容写入文件的方法以及细节,主要包括write()方法、writelines() 方法、print() 函数、使用 csv 模块、使用 json 模块,需要的可以参考一下
    2023-04-04

最新评论