在家里,在Linux上,我已经尝试使用pyUNO来使用Python控制OpenOffice.org.我一直在使用Python 2.6.这一切似乎很好用.
现在我想我会在Windows上尝试我的一个脚本(为ODF doc运行图形差异).但是当我试图运行它时,我得到了:
ImportError: No module named uno
Run Code Online (Sandbox Code Playgroud)
根据udk:Python UNO Bridge和OpenOffice.org在Windows上运行Python,我必须运行随OpenOffice.org安装的Python解释器.
Q1:OpenOffice.org可以使用Python 2.6吗?
但是,那个解释器是Python 2.3,它有点老了!我的脚本使用2.3(subprocess模块)不支持的功能.
Q2:Windows上的pyUNO编程是否可以使用标准Python发行版的pyUNO附加组件,而不是与OpenOffice.org捆绑在一起的Python?
在我的搜索到目前为止,我还没有找到任何迹象表明有一个pyUNO模块可以安装到标准的Python Windows发行版中...这是一个惊喜,因为在Ubuntu Linux上,UNO支持得很好Python只是通过:
apt-get install python-uno
Run Code Online (Sandbox Code Playgroud)
另一个问题是:如果我想制作一个同时使用pyUNO和其他第三方库的程序,该怎么办?我无法在Windows上的Python安装中安装pyUNO,所以我不得不以某种方式将我的其他第三方库安装到OpenOffice.org的捆绑Python中?这使得创建更大,更全功能的程序变得困难.
我错过了什么,或者我们现在仍处于这种状况?
我正在尝试创建一个python程序(使用pyUNO)在OpenOffice计算表上进行一些更改.
我已经在"接受"模式下启动了以前的OpenOffice,以便能够从外部程序进行连接.显然,应该像以下一样简单:
import uno
# get the uno component context from the PyUNO runtime
localContext = uno.getComponentContext()
# create the UnoUrlResolver
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext)
# connect to the running office
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;"
"urp;StarOffice.ComponentContext")
smgr = ctx.ServiceManager
# get the central desktop object
DESKTOP =smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
#The calling it's not exactly this way, just to simplify the code
DESKTOP.loadComponentFromURL('file.ods')
Run Code Online (Sandbox Code Playgroud)
但是AttributeError当我尝试访问时,我得到了一个loadComponentFromURL.如果我做了dir(DESKTOP),我只看到以下属性/方法:
['ActiveFrame', 'DispatchRecorderSupplier', 'ImplementationId', 'ImplementationName',
'IsPlugged', 'PropertySetInfo', 'SupportedServiceNames', 'SuspendQuickstartVeto',
'Title', 'Types', 'addEventListener', 'addPropertyChangeListener', …Run Code Online (Sandbox Code Playgroud) 有谁知道如何使用OO uno bridge api在Calc表中"全选"?
或者,找到最大使用的行和列号将起作用.
我想要做的是将格式应用于电子表格中的所有单元格.
(原因是我将工作表保存为csv,因此除非格式提供足够的小数位,否则数字不会准确保存.)
我在Windows 7上安装了python 2.7。我已经安装了python 2.6附带的Libre Office 3.4。因此,即使在设置所有环境变量之后,我也无法导入uno和unohelper。
我需要python 2.7,因此无法还原回python 2.6,因为我之前在开放式办公室3中使用过python 2.6。我最近更改为LibreOffice 3.4和Python 2.7(ActivePython 2.7)。
有什么办法可以使python 2.7导入LibreOffice 3.4的uno和unohelper
提前致谢。
我正在尝试获取样本和其他示例代码,我发现pyuno运行openoffice 3.1.1和python 2.5没有运气.
不幸的是,pyuno没有提供任何关于出错的线索.
In [1]: import uno
In [2]: local = uno.getComponentContext()
In [3]: resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
---------------------------------------------------------------------------
com.sun.star.uno.RuntimeException Traceback (most recent call last)
/opt/openoffice.org/basis3.1/program/ in ()
com.sun.star.uno.RuntimeException: : 'tuple' object has no attribute 'getTypes', traceback follows
no traceback available
下面是/opt/openoffice.org/basis3.1/program/officehelper.py的执行输出,它基本上启动无头办公室实例并返回一个相关的上下文对象.
den@ev:/opt/openoffice.org/basis3.1/program > python officehelper.py
Traceback (most recent call last):
File "officehelper.py", line 42, in
from com.sun.star.connection import NoConnectException
File "uno.py", line 273, in _uno_import
RuntimeException = pyuno.getClass( "com.sun.star.uno.RuntimeException" )
RuntimeError: pyuno.getClass: expecting one string argument
pyuno只有一个参数,它有一个字符串,如 …