如何把excel多级表头合并为一行,解决方案。
1.把两行内容用连接符合并为一行,如逗号或空格
2.把第二行非空内容合并到第一行
1,2 差不多吧,就是第一行,第二行 内容合并在一起,一个有连接符,一个没有
给你一个合并A1,A2单元格,逗号分隔的例子
import openpyxl
import pandas as pd
path1='D:/D1.xlsx'
path2='D:/D.xlsx'
book = openpyxl.load_workbook(path1)
wb = book.active
str1=wb.cell(1,1).value+','+wb.cell(2,1).value
wb.merge_cells("A1:A2")
wb.cell(1,1,value=str1)
book.save(path2)
book.close()
先安装 xlwings,并引入
import xlwings as xw
file_string = r"..\files\demo.xlsx"
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
app = xw.App(visible=False, add_book=False)
app.display_alerts = False
app.screen_updating = False
wb = app.books.open(file_string)
try:
sht = wb.sheets[0]
rng = sht['A1:D2'] # 取出 A1:D2 单元格内的数据
s = ''
for i in range(0, len(rng.value)): # 循环行
s += ','.join(
filter(lambda x: x != 'None', map(str, rng.value[i]))) + ' ' # 把行数据先转str,然后去除为None的单元格,剩余的用逗号拼接
# list(map(lambda x: print_str(x), rng))
sht.range('E1:H2').clear() # 清空 E1:H2
sht.range('E1:H2').merge() # 合并 E1:H2
sht.range('E1').value = s # 把合并的内容 填写在合并后的单元格内
wb.save()
print(s)
wb.close()
app.quit()
except Exception as e:
print(e.args)
wb.close()
app.quit()
import xlwings as xw
file_string = r"g:\桌面\1.xlsx" #修改为实际路径及文件名
if __name__ == '__main__':
app = xw.App(visible=True, add_book=False)
app.display_alerts = False
app.screen_updating = False
try:
wb = app.books.open(file_string)
sht = wb.sheets[0]
rng = sht['A1:F2']
for j in range(0,len(rng.value[0])): #取第一行的数据
sht.range((5,j + 1)).value = rng.value[0][j]
if rng.value[0][j] is None and j > 0:
sht.range((5,j + 1)).value = rng.value[0][j - 1]
if rng.value[1][j] != None: #合并第二行
sht.range((5,j + 1)).value = sht.range((5,j + 1)).value + rng.value[1][j]
wb.save()
wb.close()
except:
print("Unexpected error:", sys.exc_info()[0])
app.quit()
input()