我当时做的项目中有这个需求但是在网上都很难找到很全的资料,都是断断续续的,慢慢的我发现其实这就是对API的操作,python也是导入了其相应的包而已
下面我附上我的例子源码:如果这个还不能满足的你要求那么可以去msdn上找自己需要的word api拿过来就可以用的。
#-*- coding:cp936 -*-
import win32com.client
import os
import pythoncom
import time
DEFAULTDIR = "reportDoc\\"
class ReportManager():
def __init__(self):
self._wordApp = win32com.client.Dispatch("Word.Application")#得到wordapp
def AddDoucument(self):
self._title ="报告"
self._reportId = ""
self._userId=""
self._userName = ""
self._time = ""
self._result=""
self._originalWaveTitle = "图:"
self._originalWaveImg = ""
self._originalWaveExplainInfo = "说明:"
self._pulseWaveTitle = "图:"
self._pulseWaveImg = ""
self._pulseWaveExplainInfo = "明:"
self._doc = self._wordApp.Documents.Add()#向word中添加一个文档
self._doc.PageSetup.PaperSize = 7#设置页面大小 这里的7只是对应一个宏定义 而不是真的是7
self._doc.PageSetup.Orientation =1
self._sel = self._wordApp.Selection#获得一个选择器 就是光标
self.AddTable()
def AddTable(self):
self._tab = self._doc.Tables.Add(self._sel.Range,15,2)#添加表格 下边是对表格的一些设置
self._tab.Style = "网格型"
self._tab.Rows.Alignment = 1
ph = self._doc.PageSetup.PageHeight
pw =self._doc.PageSetup.PageWidth
self._tab.Columns(1).SetWidth(pw/4,0)
#Set Table
self._tab.Cell(1,1).Merge(self._tab.Cell(1,2))#合并表格
self._tab.Cell(7,1).Merge(self._tab.Cell(7,2))
self._tab.Cell(8,1).Merge(self._tab.Cell(8,2))
self._tab.Cell(9,1).Merge(self._tab.Cell(9,2))
self._tab.Cell(10,1).Merge(self._tab.Cell(10,2))
self._tab.Cell(11,1).Merge(self._tab.Cell(11,2))
self._tab.Cell(12,1).Merge(self._tab.Cell(12,2))
self._tab.Cell(13,1).Merge(self._tab.Cell(13,2))
self._tab.Cell(14,1).Merge(self._tab.Cell(14,2))
self.InitTableData()
#add some data into table
def InitTableData(self):
self._tab.Cell(1,1).Select()#当你设置字体在表格中居中的时候 必须将光标设置到这个表格中 这里选中这个表格 如果不这样做 是达不到字体对齐的
self._sel.Text = self._title
self._sel.ParagraphFormat.Alignment = 1
self._sel.Font.Name = "黑体"
self._sel.Font.Size = 18
range = self._tab.Cell(2,1).Range
range.Text = "报告编号:"
range.Bold = 1
range = self._tab.Cell(3,1).Range
range.Text = "编号:"
range.Bold = 1
range=self._tab.Cell(4,1).Range
range.Text = "姓名:"
range.Bold=1
range= self._tab.Cell(5,1).Range
range.Text = "时间:"
range.Bold=1
range=self._tab.Cell(6,1).Range
range.Text = "结果:"
range.Bold =1
range=self._tab.Cell(7,1).Range
range.Text ="图:"
range.Bold=1
self._tab.Cell(9,1).Range.Text = "说明:\n"
range = self._tab.Cell(10,1).Range
range.Text = "图:"
range.Bold=1
self._tab.Cell(12,1).Range.Text = "说明:\n"
range = self._tab.Cell(13,1).Range
range.Text = "图:"
range.Bold = 1
range = self._tab.Cell(15,1).Range
range.Text = "备注:"
range.Bold = 1
str = "报告时间:" + time.strftime("%Y-%m-%d %H:%M:%S")
self._sel.MoveDown(5,17)
self._sel.Text = str
self._sel.ParagraphFormat.Alignment = 2
def InsertDataInfoToTable(self,rId,uId,uName,tValue,rValue,oWImg,pWImg,rImg,fileName):
try:
self.InsertReportId(rId)
self.InsertUserId(uId)
self.InsertUserName(uName)
self.InsertTime(tValue)
self.InsertResult(rValue)
self.InsertOriginalWave(oWImg)
self.InsertPulseWave(pWImg)
self.InsertPulseRecordImg(rImg)
self.SaveAsFile(fileName)
return True
except pythoncom.com_error:
print pythoncom.com_error
return False
def InsertReportId(self,value):
self._tab.Cell(2,2).Range.Text = value#给表格写入值
def InsertUserId(self,value):
self._tab.Cell(3,2).Range.Text = value
def InsertUserName(self,value):
self._tab.Cell(4,2).Range.Text = value
def InsertTime(self,value):
self._tab.Cell(5,2).Range.Text = value
def InsertResult(self,value):
self._tab.Cell(6,2).Range.Text = value
def InsertOriginalWave(self,value):
self._tab.Cell(8,1).Select()
pic =self._sel.InlineShapes.AddPicture(os.getcwd() + "\\" +value)#添加图片
def InsertPulseWave(self,value):
self._tab.Cell(11,1).Select()
pic =self._sel.InlineShapes.AddPicture(os.getcwd() + "\\" +value)
def InsertPulseRecordImg(self,value):
self._tab.Cell(14,1).Select()
pic = self._sel.InlineShapes.AddPicture(os.getcwd() + "\\" + value)
def SaveAsFile(self,Name):
dpath=os.getcwd()
path = dpath+"\\" + DEFAULTDIR+Name
if os.path.exists(path) and os.path.isfile(path):
os.remove(path)
self._doc.SaveAs(path)
os.chdir(dpath)
self._wordApp.Visible = True
self.CleanUp()
def CleanUp(self):
pythoncom.CoUninitialize()
def OpenFileOfName(self,name):
dpath = os.getcwd()
path = dpath + "\\" +DEFAULTDIR + name
if os.path.exists(path) and os.path.isfile(path):
self._wordApp.Documents.Open(path)
self._wordApp.Visible = True
self.CleanUp()
return True
self.CleanUp()
return False
if __name__ == '__main__':
report = ReportManager()
report.AddDoucument()
report.InsertOriginalWave("f:\\test2.bmp")
report.InsertPulseWave("F:\\test1.bmp")
report.CleanUp()
python 操作Word文档
最新推荐文章于 2024-07-20 18:55:02 发布