利用 Excel封装成OCX 在wxPython窗口中显示、操作
来源:互联网 发布:sony 摄像机 网络直播 编辑:程序博客网 时间:2024/06/10 15:09
<span style="font-size:18px;"># -*- coding: utf-8 -*- SCITE 消除乱码设置: 文件->编码->带BOM的UTF-8# 奇怪的乱码!"""目的: 1. 封装Excel 的 OCX太少! 好用的更是少之又少!(注意!!! iWebOffice2006.ocx涉及到版权! 这里iWebOffice2006.ocx仅做学习、研究、交流用! 如需使用请君购买正版! ) 2. OCX嵌入到wxPython对话框例子太少. 3. 这个例子就是填补1-2空白 4. 最好的利用了: 1. excel高普及率、 2. VBA操作的灵活强大 3. Python高效开发、不用编译直接运行 4. Python脚本+ VBA脚本 + 窗口界面 浑然一体环境准备: 1. Python2.7.8 2. Office2007 3. pyInstaller2.1 4. wxPython For py2.7 5. 其他py需要的包(如:COM,Win32)根据提示安装"""import wximport wx.lib.anchors as anchorsfrom wx.lib.activexwrapper import MakeActiveXClassimport win32com.client.gencache as win32import sysreload(sys)de = sys.getdefaultencoding() # asciife = sys.getfilesystemencoding() #mbcs#print de, fe# 注意: 先使用 开始->Python2.7->PythonWin->Tools->COM Makepy utility->选中iWebOffice2006Library(1.0) # 生成C:\Python27\lib\site-packages\win32com\gen_py\19890DF8-EB54-4FB0-ABBA-5242B2A07EEEx0x1x0.py!excelControl = win32.EnsureModule('{19890DF8-EB54-4FB0-ABBA-5242B2A07EEE}',0,1,0) #print excelControl#print dir(excelControl)if excelControl is None: # 发布时要带上 19890DF8-EB54-4FB0-ABBA-5242B2A07EEEx0x1x0.py! raise ImportError("Can't load iWebOffice2006.ocx Make sure you have iWebOffice2006.ocx regstered.") [ ID_ANCHORSDEMOFRAMEANCHOREDPANEL, ID_ANCHORSDEMOFRAMEMAINPANEL, ID_ANCHORSDEMOFRAMEOKBUTTON, ID_ANCHORSDEMOFRAME, ] = map(lambda _init_ctrls: wx.NewId(), range(4)) class MyFrame(wx.Frame): def _init_utils(self): pass def _init_ctrls( self ): wx.Frame.__init__( self, size=(800, 600), id=ID_ANCHORSDEMOFRAME, title=u'用Excel(OCX)做界面', parent=None, name='AnchorsDemoFrame', style = wx.DEFAULT_FRAME_STYLE | wx.CLIP_CHILDREN, pos=(261, 123) ) self._init_utils() self.mainPanel = wx.Panel( size=(320, 160), parent=self, id=ID_ANCHORSDEMOFRAMEMAINPANEL, name='panel1', style=wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN | wx.FULL_REPAINT_ON_RESIZE, pos=(0, 0) ) self.mainPanel.SetAutoLayout(True) # self.okButton = wx.Button( label='OK', id=ID_ANCHORSDEMOFRAMEOKBUTTON, parent=self.mainPanel, name='btnOk', size=(72, 24), style=0, pos=(240, 128) ) self.okButton.SetConstraints( anchors.LayoutAnchors(self.okButton, False, False, True, True) ) self.Bind( wx.EVT_BUTTON, self.OnBtnOk, id=ID_ANCHORSDEMOFRAMEOKBUTTON ) excelWrapper = MakeActiveXClass( excelControl.HandWriteCtrl ) #print excelWrapper self.excelOcx = excelWrapper( self.mainPanel, -1, (8, 40), ( 304, 80 ) ) self.excelOcx.SetConstraints( anchors.LayoutAnchors(self.excelOcx, True, True, True, True) ) self.excelOcx.ShowToolBar = 2 # 不现显示工具栏 self.excelOcx.ShowMenu = "0" # 隐藏菜单 #self.excelOcx.Compatible = False #Save Excel2007 must set false. Must befor self.excelOcx.FileType! 测试版的ocx才有此功能 self.excelOcx.FileType = ".xls" #operate excel fmt file. #print "self.excelOcx.Compatible", self.excelOcx.Compatible self.iExcelIndex = 0 self.arrExcel = [ u"./Excel报告模版/钢筋拉伸试验.xls".encode( fe ), u"./Excel报告模版/钢筋焊接件拉伸试验.xls".encode( fe ), u"./Excel报告模版/混凝土抗压试验.xls".encode( fe ), u"./Excel报告模版/混凝土抗折试验.xls".encode( fe ), u"./Excel报告模版/砂浆抗压试验.xls".encode( fe ), u"./Excel报告模版/水泥抗压试验.xls".encode( fe ), u"./Excel报告模版/砖块抗压试验.xls".encode( fe ), ] self.OpenExcelFile( self.arrExcel[ self.iExcelIndex ] ) #self.excelOcx.WebOpenLocalFile( self.arrExcel[ self.iExcelIndex ] ) # print "self.excelOcx.WebObject:", self.excelOcx.WebObject # print "self.excelOcx.WebObject.Application:", self.excelOcx.WebObject.Application #self.excelOcx.WebObject.Application.ActiveSheet.Range("AX67").Value = "Value345" self.okButton.Label = str( self.iExcelIndex ) def __init__( self ): self._init_ctrls( ) def OpenExcelFile( self, strExcelFilePath ): self.excelOcx.WebClose() # Close First self.excelOcx.WebOpenLocalFile( strExcelFilePath ) # then open #print strExcelFilePath app = self.excelOcx.WebObject.Application app.DisplayFormulaBar = False #公式 app.CommandBars[ "Cell" ].Enabled = False # 单元格 app.ActiveWindow.DisplayHeadings = False # 不显示:行头、列头 app.ActiveWindow.DisplayHorizontalScrollBar = False # 水平滚动条 app.ActiveWindow.DisplayVerticalScrollBar = True # 垂直滚动条 app.ActiveWindow.DisplayWorkbookTabs = False # 工作表标签Tab页 app.ActiveWindow.DisplayGridlines = False # 网格线 app.ActiveSheet.Protect( None, True, True, True ) # 保护单元格 def OnBtnOk( self, evt ): #r = self.excelOcx.WebSaveLocalFile( self.strExcelFile ) #print "self.excelOcx.WebSaveLocalFile:", r self.iExcelIndex += 1 self.iExcelIndex %= 5 self.OpenExcelFile( self.arrExcel[ self.iExcelIndex ] ) self.okButton.Label = str( self.iExcelIndex ) #self.excelOcx = None #self.Close()if __name__=="__main__": app=wx.PySimpleApp() media1=MyFrame() media1.Show() app.MainLoop() </span>
0 0
- 利用 Excel封装成OCX 在wxPython窗口中显示、操作
- 【wxPython】wxPython之窗口操作
- wxPython实现窗口在任务栏中闪烁
- 将MDI封装成OCX之后,在IE中运行遇到的问题
- 在MFC中利用HALCON读取图像,并显示在主窗口和picture空间中
- Office 2010 中打开多个Excel文件只能在同一窗口中显示的问题
- Office 2010 中打开多个Excel文件只能在同一窗口中显示的问题
- Office 2010 中打开多个Excel文件只能在同一窗口中显示的问题
- Office 2010 中打开多个Excel文件只能在同一窗口中显示的问题
- 在mfc中利用opencv打开摄像头并显示在窗口上
- java中Excel操作的简单封装
- 在窗口中显示字符串
- 将VBA操作封装为DLL组件并在EXCEL中调用
- 在wxPython使ListCtrl占据整个窗口
- 在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
- 点击修改按钮,将数据显示在弹层窗口中,利用ajax实现
- 如何利用panel在一个窗口中实现诸多页面的显示
- 在WTL中利用滚动窗口类CScrollWindowImpl显示BMP图片
- POJ1149 最大流经典建图PIG
- 硬件目录
- Unity3D Vuforia Android 相机聚焦模式设置
- HTML文本框内容发生变化时引发事件执行
- php-插入排序
- 利用 Excel封装成OCX 在wxPython窗口中显示、操作
- Google Guava-集合类型
- JavaScript函数的认识
- Android ListView控件的资源回收机制
- code slot - SkipList - 1
- c++ primer plus 第六版第二章编程练习答案
- hdu3374最小表示法+KMP
- 动态分配内存malloc()函数
- sql查处某字段不重复的全部记录