Python之Excel编辑-[小试牛刀]将表格列分拆或合并
程序员文章站
2022-03-11 09:08:28
...
任务1:将表格指定列内容分拆成多列
将如下格式的表格中规格列的内容进行分拆,分解成长,宽,高
解决思路:
将数据读取成Pandas的DataFrame形式,然后采用字符串分割的方法对规格列的内容进行分割,并添加长,宽,高三列。
app = xw.App(visible=True, add_book=False)
file_list = os.listdir(file_path)
for file in file_list:
if '~$' in file:
continue
if file.split('.')[-1] != 'xlsx':
continue
wb = app.books.open(file_path+'\\'+file)
for sheet in wb.sheets:
values = sheet.range('A1').expand().options(pd.DataFrame, header = 1, index = False).value
if values['规格'].empty:
continue
newValue = values['规格'].str.split('*', expand = True)
values['长(mm)'] = newValue[0]
values['宽(mm)'] = newValue[1]
values['高(mm)'] = newValue[2]
values.drop(['规格'],axis=1, inplace = True)
sheet['A1'].options(index = False).value = values
print(values)
wb.save()
wb.close()
app.quit()
任务2:将表格多列内容进行合并
将如下格式的表格中的长,宽,高三列进行合并
解决思路:
将数据读取成Pandas的DataFrame形式,然后采用字符串合并的方法对长,宽,高三列内容进行字符串合并。
app = xw.App(visible=True, add_book=False)
file_list = os.listdir(file_path)
for file in file_list:
if '~$' in file:
continue
if file.split('.')[-1] != 'xlsx':
continue
wb = app.books.open(file_path+'\\'+file)
for sheet in wb.sheets:
values = sheet.range('A1').expand().options(pd.DataFrame, header=1, index=False).value
if values['长(mm)'].empty or values['宽(mm)'].empty or values['高(mm)'].empty:
continue
values['规格'] = values['长(mm)'].astype('str') + '*' + values['宽(mm)'].astype('str') + '*' + values['高(mm)'].astype('str')
values.drop(['长(mm)', '宽(mm)', '高(mm)'], axis=1, inplace=True)
sheet.clear()
sheet['A1'].options(index=False).value = values
sheet.autofit()
wb.save()
wb.close()
app.quit()
备注:
- 在本任务中,需要用新的数据覆盖原有的数据,在上面使用sheet.clear()来清除原有的数据
- Pandas的DataFrame数据是带了序号的,在往excel表格中写入时如果不期望将这个序号写入,则需要使用options(index=False)来指示不带这个序号
- 表格中读出的数字不是字符串类型,因此在进行合并时需要进行类型转换,使用astype(‘str’)来指示按照str的类型来进行处理