python实现excel单元格内容操作一、程序设计初衷 某天到驾校办点业务,看到驾校监考老师在用excel软件手动转移数据,当时我突发奇想,能不能用python全自动实现这个转移过程呢?二、初试牛刀 到家之后我就开始研究数据转移的原理,其实看似很简单,就是把含所有学员成绩的excel表格,如下图所示: 原始excel表 转换成一张只打印4个人的成绩单,明白了原理之后就好办了,我的计划是把excel转换成word,每个页面打印4个学员的考试成绩,如下图所示: 转换成功的word文件三、代码展示开发时间:202233117:40importpandasaspdimportxlrdfromdocximportDocumentfromdocx。enum。tableimportWDTABLEALIGNMENTfromdocx。enum。textimportWDPARAGRAPHALIGNMENTfromdocx。enum。tableimportWDCELLVERTICALALIGNMENTfromdocx。sharedimportCm,Pt,Inchesfromdocx。enum。sectionimportWDORIENTATIONimporttime,osimportwin32api,win32condefcj():nowtimetime。strftime(Ymd,time。localtime())fileos。listdir(os。getcwd())filelst〔〕forxlinfile:ifos。path。splitext(xl)〔1〕。xls:filelst。append(xl)dfxlrd。openworkbook(filelst〔0〕)sheet1df。sheets()〔0〕hangsheet1。nrowstitlesheet1。rowvalues(0)data〔〕documentDocument()document。styles〔Normal〕。font。sizePt(10)sectiondocument。sections〔0〕newwidth,newheightsection。pageheight,section。pagewidthsection。orientationWDORIENTATION。LANDSCAPEsection。pagewidthnewwidthsection。pageheightnewheightsection。leftmarginCm(1)section。rightmarginCm(1)section。topmarginCm(1)上边距section。bottommarginCm(1)下边距forjinrange(1,hang):data。append(sheet1。rowvalues(j))fornindata:p1document。addparagraph()p1。alignmentWDTABLEALIGNMENT。CENTERrun1p1。addrun(考生虚拟场景考试成绩单)run1。font。sizePt(18)run1。font。boldTruetable1document。addtable(rows1,cols2,styleMediumList1)tabledocument。addtable(rows2,cols9,styleTableGrid)hdrcelltable1。rows〔0〕。cellshdrcell〔0〕。addparagraph(考试类型:初考)hdrcell〔1〕。addparagraph(考试时间:{}。format(nowtime))celltable1。cell(0,1)cell。paragraphs〔1〕。alignmentWDPARAGRAPHALIGNMENT。RIGHTtable。cell(0,0)。widthCm(1。6)table。cell(1,0)。widthCm(1。6)table。cell(0,1)。widthCm(1。2)table。cell(1,1)。widthCm(1。2)table。cell(0,4)。widthCm(2)table。cell(1,4)。widthCm(2)table。cell(0,5)。widthCm(3)table。cell(1,5)。widthCm(3)table。cell(0,6)。widthCm(6)table。cell(1,6)。widthCm(6)table。cell(0,7)。widthCm(2)table。cell(1,7)。widthCm(2)forrow,objrowinenumerate(table。rows):forcol,cellinenumerate(objrow。cells):cell。textcell。textd,d(row,col)hdrcells1table。rows〔0〕。cellshdrcells1〔0〕。addparagraph(姓名)hdrcells1〔1〕。addparagraph(性别)hdrcells1〔2〕。addparagraph(身份证号)hdrcells1〔3〕。addparagraph(准考证号)hdrcells1〔4〕。addparagraph(考试类别)hdrcells1〔5〕。addparagraph(节能驾驶成绩)hdrcells1〔6〕。addparagraph(危险源辨识与防御性驾驶成绩)hdrcells1〔7〕。addparagraph(合计)hdrcells1〔8〕。addparagraph(考生签字)foryinrange(0,9):celltable。cell(0,y)cell。paragraphs〔1〕。alignmentWDPARAGRAPHALIGNMENT。CENTERhdrcells2table。rows〔1〕。cellshdrcells2〔0〕。addparagraph(n〔1〕)hdrcells2〔1〕。addparagraph(n〔2〕)hdrcells2〔2〕。addparagraph(n〔3〕)hdrcells2〔3〕。addparagraph(n〔4〕)hdrcells2〔4〕。addparagraph(n〔5〕)hdrcells2〔5〕。addparagraph(n〔6〕)hdrcells2〔6〕。addparagraph(n〔7〕)aint(n〔6〕)bint(n〔7〕)hdrcells2〔7〕。addparagraph(str(ab))foryinrange(0,8):celltable。cell(1,y)cell。paragraphs〔1〕。alignmentWDPARAGRAPHALIGNMENT。CENTERp2document。addparagraph()p2。alignmentWDTABLEALIGNMENT。CENTERrun2p2。addrun()run2。font。sizePt(18)document。save(成绩单。docx)win32api。MessageBox(0,考试成绩单生成成功!,成绩单,win32con。MBOK)ifnamemain:cj()四、不足之处 只因为本人不是专业撸代码的,再加上学python没有多长时间,所以思路不是很清晰,代码规划的不好,希望各位大神勿喷。但是我想在今后的日子里,我会增强梳理代码意识,逐步会把代码撸的简洁、清晰、明了谢谢大家!