最近,我正在尝试针对MS Word文件管理(现在编写)使用不同的API。至此,我只需要编写一个简单的python
API。我尝试使用win32com模块,该模块非常强大,缺少在线python示例(对VB和C的了解很少,无法翻译MSDN中的示例)。
我尝试使用python-docx,但是在安装后,我得到了任何docx函数的回溯。
Traceback (most recent call last):
File "C:\filepath.py", line 9, in <module>
ispit = newdocument()
NameError: name 'newdocument' is not defined
我通过源代码和easy_install安装lxml时遇到一些问题。它正在检查libxlm2和libxslt二进制文件。我下载了它们并添加了环境路径,但是每次都停止安装槽源或easy_install。
最后,我使用了来自此站点Link的非官方python扩展包。安装速度很快,最终没有任何错误。
我可以做些什么来使docx正常工作,并且在线上有一些与python
win32com相关的参考资料吗?我找不到。(除了MSDN(VB不是python)和O’Reily在win32上的Python编程)
使用时win32com
,请记住您正在与Word对象模型对话。您无需了解很多VBA或其他语言即可将示例应用于使用Python。您只需要弄清楚正在使用对象模型的哪些部分。
让我们采用以下示例(在VBA中),该示例将创建的新实例Application
,并将新文档加载到该新实例中:
Public Sub NewWordApp()
'Create variables to reference objects
'(This line is not needed in Python; you don't need to declare variables
'or their types before using them)
Dim wordApp As Word.Application, wordDoc As Word.Document
'Create a new instance of a Word Application object
'(Another difference - in VBA you use Set for objects and simple assignment for
'primitive values. In Python, you use simple assignment for objects as well.)
Set wordApp = New Word.Application
'Show the application
wordApp.Visible = True
'Create a new document in the application
Set wordDoc = wordApp.Documents.Add()
'Set the text of the first paragraph
'(A Paragraph object doesn't have a Text property. Instead, it has a Range property
'which refers to a Range object, which does have a Text property.)
wordDoc.Paragraphs(1).Range.Text = "Hello, World!"
End Sub
Python中类似的代码片段可能看起来像这样:
import win32com.client
#Create an instance of Word.Application
wordApp = win32com.client.Dispatch('Word.Application')
#Show the application
wordApp.Visible = True
#Create a new document in the application
wordDoc = wordApp.Documents.Add()
#Set the text of the first paragraph
wordDoc.Paragraphs(1).Range.Text = "Hello, World!"
Word对象模型的一些链接:
一些Python示例:
问题内容: 有人可以解释为什么整数示例导致x和y的值不同,而列表示例导致x和y是同一对象的原因吗? 问题答案: 因为整数是不可变的,而list是可变的。您可以从语法中看到。在你实际上是分配一个新值(管它是在LHS)。在中,您要在列表上调用index运算符并为其指定一个参数-它实际上等效于,这显然会更改原始对象,而不创建新对象。
问题内容: 为什么多重赋值为int而不是列表或其他对象提供不同的引用? 问题答案: 在int示例中,您首先将和分配了相同的对象,然后使用另一个对象(的结果)重新分配。现在指的是另一个对象。 在列表示例中,您为和分配了相同的对象,但是您并没有做任何更改。仅更改列表对象的内部状态,而不更改其标识。因此,它们保持不变。 如果替换为,则最终会得到不同的对象,因为再次需要为分配一个新对象(的结果)。 请注意
Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档,而用它保存的文档可以在Microsoft Office 2007/2010, Microsoft Mac Office 2008, Google Docs, OpenOffice.org 3, and Apple iWork 08中打开。 示例: from docx import Doc
这份参考手册讲述该语言的语法和“核心语义”。它虽然简洁,但是力求准确和全面。不是语言必要部分的内建对象类型、内建函数和模块的语义在Python标准库中讲述。关于语言的非正式的介绍,请参阅Python教程。对于C和C++程序员,还存在另外两个手册:扩展和嵌入Python解释器讲述关于如何编写Python扩展模块的高级话题,Python/C API参考手册详细地讲解对C/C++程序员可用的接口。
问题内容: 我有一个目录结构 而且我可以使用访问网络模块。 但是,pycharm抱怨它无法访问该模块。我该如何教pycham解析参考文献? 问题答案: 手动将其添加为你所做的确实这样做的一种方式,但有一个简单的方法,那就是通过简单地告诉要在添加文件夹作为源根目录,然后添加源根你的Python路径。 这样,你就不必将代码硬编码到解释器的设置中: 添加为源内容根: 然后确保将添加源添加到你的: 这样,
问题内容: 我尝试在sqlite数据库上使用正则表达式和python检查带有模式的字符串。当我尝试使用具有“的模式”的de搜索字符串时出现问题,例如: 我应该在正则表达式之前以其他方式编译器不喜欢…语法错误 有人知道该怎么做吗? 我的正则表达式函数:con.create_function(“ regexp”,2,regexp) 问题答案: 使用参数化的sql。然后,您无需自己转义引号: 产量