xls=easy_excel('test.xlsx')
xls.setCell('Sheet1',2,2,u"编号")
xls.setCell('Sheet1',2,3,u"优先级")
xls.setCell('Sheet1',2,4,u"操作步骤")
xls.setCell('Sheet1',2,5,u"预期结果")
xls.setCell('Sheet1',2,6,u"实际结果")
xls.set_col_width('Sheet1')
dic_temp={}
root=ElementTree.parse("./test.xml")
lst_node=root.getiterator("testcase")
num=len(lst_node)
row_flag=3
step_num=0
for case in range(0,num):
steps=lst_node[case].find("steps")
step_num=len(steps)
keywords=lst_node[case].find("keywords")
if keywords is not None:
dic_temp['keyword']=keywords[0].attrib["name"]
else:
dic_temp['keyword']=0
for step in steps:
list_temp=[]
list_temp.append(step[1].text)
list_temp.append(step[2].text)
dic_temp[step[0].text]=list_temp
row_start=row_flag
xls.setCell('Sheet1',row_flag,2,case+1)
xls.setCell('Sheet1',row_flag,3,dic_temp['keyword'])
for j in range(1,step_num+1):
xls.setCell('Sheet1',row_flag,4,dic_temp[str(j)][0])
xls.setCell('Sheet1',row_flag,5,dic_temp[str(j)][1])
row_flag+=1
xls.mergeCells('Sheet1',row_start,3,row_flag-1,3)
xls.mergeCells('Sheet1',row_start,2,row_flag-1,2)
for row in range(2,row_flag):
for col in range(2,7):
xls.setBorder('Sheet1',row,col)
xls.save()
xls.close()
print 'success!'
raw_input("Press any key to continue...") 写入excel用了win32com,使用它前提是电脑里要有excel软件,网上虽然有教程但是不是很全,设置单元格格式我就试了很久,个人对win32接口不熟,后来发现搜一搜vb操作excel的方法然后依葫芦画瓢,实现了设置单元格格式以及合并单元格。下图是实际效果:
<p></p>之类的标志是由于导出xml时没做处理,这个可以通过字符串处理的,在此就不赘述了。源码都在附件里,需要自己新建空的test.xlsx。