python openpyxl 单元格分列
时间: 2024-12-27 13:28:26 浏览: 15
### 如何使用 `openpyxl` 对 Excel 文件中的单元格进行分列操作
为了实现对 Excel 单元格内字符串的分割并将其分配给多个新创建的列,可以采用如下方式:
#### 方法一:基于现有数据构建新的工作表结构
如果目标是从单个含有复合信息(例如逗号分隔的名字和姓氏)的单元格中提取特定部分,并将这些分离出来的值放置于相邻的新列里,则可以在遍历原始表格的同时动态地向右侧新增加额外的列来容纳拆解后的子项。
```python
from openpyxl import load_workbook
def split_cell_data(ws, col_to_split='A', delimiter=','):
max_row = ws.max_row
for i in range(1, max_row + 1):
cell_value = str(ws[f'{col_to_split}{i}'].value).strip()
if not cell_value:
continue
parts = [part.strip() for part in cell_value.split(delimiter)]
start_col_index = ord(col_to_split.upper()) - ord('A')
end_col_index = start_col_index + len(parts) - 1
# Clear existing data after the column being split.
while True:
next_col_letter = chr(ord(col_to_split.upper()) + 1)
if f"{next_col_letter}{i}" in ws._cells:
del ws[f"{next_col_letter}{i}"]
else:
break
for idx, part in enumerate(parts):
new_column_letter = chr(start_col_index + idx + ord('A'))
ws[f'{new_column_letter}{i}'] = part
wb = load_workbook(filename="example.xlsx")
ws = wb.active
split_cell_data(ws=ws, col_to_split='B', delimiter='-') # Assuming B contains hyphen-separated values
wb.save("modified_example.xlsx")
```
此代码片段展示了如何加载现有的 Excel 工作簿以及活动的工作表。接着定义了一个函数 `split_cell_data()` 来接收要处理的工作表对象、待分裂的目标列字母标识符及其内部项目的分隔符作为参数。该过程会迭代每一行的数据,在遇到非空白单元格时按照指定字符切片其内容,并依次填充至右边相应位置上的新单元格之中[^2]。
需要注意的是上述例子假设输入文件名为 `"example.xlsx"` 并且默认选取第二列为需分解的对象;实际应用时应根据具体需求调整路径名及其他配置选项。
阅读全文