简单做了个模板,能干这个:
指定sheet中某列数据进行按需拆分,拆分后新建一个test的sheet,将数据分别存入test的不同列中。
import os
import xlwings as xw
import re
#excel路径
path=r'C:\Users\xxx\Desktop\123.xlsx'#设置需要分列的sheet名
sheetname='Sheet1'
#设置需要分列的列名
colname='B'
#开始单元格
rowb=2
#结束单元格
rowe=25def excel分列(path):excelapp=xw.App(visible=False, add_book=False)#打开excelexcel = excelapp.books.open(path)#获取sheetssheet = excel.sheets#增加一个拆分用sheet,testif sheet[0].name !='test':sheet.add('test', before=sheet[0].name)#print(sheet[0].name)sheet2 = excel.sheets['Sheet1']#设置拆分条件,这里以复合字串为例,型如:你好123+好的234,拆成:你好,123,+,好的234num1=re.compile('\w.[0-9]')#print(re.findall(num1,sheet2.range('b2:b25').value[0])[0][:-1])num2=re.compile('\d++')#print(re.findall(num2,sheet2.range('b2:b25').value[0])[0])num3=sheet2.range('b2:b25').value[0].split('+')#print(num3[1])t1=[]t2=[]t3=[]t4=[]#拆分取值for i in sheet2.range(colname+str(rowb)+':'+colname+str(rowe)).value:t1.append(re.findall(num1,i)[0][:-1])t2.append(re.findall(num2,i)[0])t3.append('+')t4.append(i.split('+')[1])#print(t1,t2,t3,t4)#将拆分数据填入test中sheet3=excel.sheets['test']for i in range(len(t1)):sheet3.range('A'+str(i+1)).value=t1[i]sheet3.range('B' + str(i + 1)).value = t2[i]sheet3.range('C' + str(i + 1)).value = t3[i]sheet3.range('D' + str(i + 1)).value = t4[i]excel.save()excel.close()excelapp.quit()excel分列(path)