Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pyqt5 使用QAxWidget怎么显示Microsoft Word? #7

Closed
Timessence opened this issue Mar 13, 2018 · 7 comments
Closed

pyqt5 使用QAxWidget怎么显示Microsoft Word? #7

Timessence opened this issue Mar 13, 2018 · 7 comments
Labels

Comments

@Timessence
Copy link

萌新请教~使用QAxWidget能显示Word,但打不开指定的.docx文件。。
qq 20180313224107

@Timessence
Copy link
Author

http://blog.csdn.net/zy19940906/article/details/61426429#一qaxwidget操作office
在pyqt照写后打不开。。。。

@892768447
Copy link
Member

试试呢。

# -*- coding: utf-8 -*-
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QFileDialog


class Window(QWidget):

    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        layout = QVBoxLayout(self)
        self.axWidget = QAxWidget('Word.Applicatio', self)
        layout.addWidget(self.axWidget)
        layout.addWidget(QPushButton('打开word', self, clicked=self.onOpenWord))

    def onOpenWord(self):
        path, _ = QFileDialog.getOpenFileName(
            self, '请选择Word文件', '', 'word(*.docx *.doc)')
        if not path:
            return
        # 不显示窗体
        self.axWidget.dynamicCall('SetVisible (bool Visible)', 'false')
        self.axWidget.setProperty('DisplayAlerts', False)
        self.axWidget.setControl(path)


if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

892768447 added a commit that referenced this issue Mar 14, 2018
@Timessence
Copy link
Author

@892768447 非常感谢群主的帮助谢谢新人不太会用gayhub,还请见谅~

@FengZhiheng
Copy link

试试呢。

# -*- coding: utf-8 -*-
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QFileDialog


class Window(QWidget):

    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        layout = QVBoxLayout(self)
        self.axWidget = QAxWidget('Word.Applicatio', self)
        layout.addWidget(self.axWidget)
        layout.addWidget(QPushButton('打开word', self, clicked=self.onOpenWord))

    def onOpenWord(self):
        path, _ = QFileDialog.getOpenFileName(
            self, '请选择Word文件', '', 'word(*.docx *.doc)')
        if not path:
            return
        # 不显示窗体
        self.axWidget.dynamicCall('SetVisible (bool Visible)', 'false')
        self.axWidget.setProperty('DisplayAlerts', False)
        self.axWidget.setControl(path)


if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

我们遇到什么困难:
ModuleNotFoundError: No module named 'PyQt5.QAxContainer'

@Galaxyjia
Copy link

mac 电脑上显示 No module named 'PyQt5.QAxContainer

@892768447
Copy link
Member

mac 电脑上显示 No module named 'PyQt5.QAxContainer

这只有win上才有的com对象

@copperyp
Copy link

试试呢。

# -*- coding: utf-8 -*-
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QFileDialog


class Window(QWidget):

    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        layout = QVBoxLayout(self)
        self.axWidget = QAxWidget('Word.Applicatio', self)
        layout.addWidget(self.axWidget)
        layout.addWidget(QPushButton('打开word', self, clicked=self.onOpenWord))

    def onOpenWord(self):
        path, _ = QFileDialog.getOpenFileName(
            self, '请选择Word文件', '', 'word(*.docx *.doc)')
        if not path:
            return
        # 不显示窗体
        self.axWidget.dynamicCall('SetVisible (bool Visible)', 'false')
        self.axWidget.setProperty('DisplayAlerts', False)
        self.axWidget.setControl(path)


if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

self.axWidget = QAxWidget('Word.Applicatio', self) => self.axWidget = QAxWidget('Word.Application', self)

every thing ok, in my windows10 + office 16.0.xxxx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants