python 操作Word文档

我当时做的项目中有这个需求但是在网上都很难找到很全的资料,都是断断续续的,慢慢的我发现其实这就是对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()






















  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值