使用 Python 在 LibreOffice 中创建流程图

2024-01-02

关于如何使用 Python 控制 LibreOffice 文本文档和电子表格的示例有很多,但关于如何使用绘图程序的文档却很少。我试图弄清楚如何使用 Python 在 LibreOffice 中绘制流程图或至少某些形状。我使用的是 Windows 10 和 LibreOffice 5 附带的 Python 3.3。

有一个很好的例子说明如何使用电子表格LibreOffice Python 示例 http://christopher5106.github.io/office/2015/12/06/openoffice-libreoffice-automate-your-office-tasks-with-python-macros.html

在示例中,如果您使用文本文档、电子表格、绘图或其他文档,则以下行很常见。

import socket  
import uno
localContext = uno.getComponentContext()
resolver =     localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext )
ctx = resolver.resolve( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
model = desktop.getCurrentComponent()

示例中还包含以下代码来修改电子表格程序,并且效果很好。该代码将“Hello World”和一个数字放入电子表格中。

cell1 = active_sheet.getCellRangeByName("C4")
cell1.String = "Hello world"
cell2 = active_sheet.getCellRangeByName("E6")
cell2.Value = cell2.Value + 1

对于绘图程序是否有一些类似的命令来获取活动工作表并获取可以绘制的形状列表?我可能找错了地方,但没有找到绘图程序的任何文档。


这是一个有效的 Python 示例:

import uno

def create_shape(document, x, y, width, height, shapeType):
    shape = document.createInstance(shapeType)
    aPoint = uno.createUnoStruct("com.sun.star.awt.Point")
    aPoint.X, aPoint.Y = x, y
    aSize = uno.createUnoStruct("com.sun.star.awt.Size")
    aSize.Width, aSize.Height = width, height
    shape.setPosition(aPoint)
    shape.setSize(aSize)
    return shape

def insert_shape():
    document = XSCRIPTCONTEXT.getDocument()
    drawPage = document.getDrawPages().getByIndex(0)
    shape = create_shape(
        document, 0, 0, 10000, 5000, "com.sun.star.drawing.RectangleShape")
    drawPage.add(shape)
    shape.setString("My new RectangleShape");
    shape.setPropertyValue("CornerRadius", 1000)
    shape.setPropertyValue("Shadow", True)
    shape.setPropertyValue("ShadowXDistance", 250)
    shape.setPropertyValue("ShadowYDistance", 250)
    shape.setPropertyValue("FillColor", int("C0C0C0", 16))  # blue
    shape.setPropertyValue("LineColor", int("000000", 16))  # black
    shape.setPropertyValue("Name", "Rounded Gray Rectangle")

# Functions that can be called from Tools -> Macros -> Run Macro.
g_exportedScripts = insert_shape,

有相当完整的参考文档https://wiki.openoffice.org/wiki/Documentation/DevGuide/Drawings/Working_with_Drawing_Documents https://wiki.openoffice.org/wiki/Documentation/DevGuide/Drawings/Working_with_Drawing_Documents。特别查看“形状”页面(注意页面右侧的导航)。一方面,有一个页面根据您的要求提供了形状类型列表。

由于 Python-UNO 文档有些有限,因此您需要习惯阅读 Java 或 Basic 中的示例并将代码改编为 Python,正如我上面所做的那样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 在 LibreOffice 中创建流程图 的相关文章

  • Python 3 os.urandom

    在哪里可以找到完整的教程或文档os urandom 我需要获得一个随机 int 来从 80 个字符的字符串中选择一个字符 如果你只需要一个随机整数 你可以使用random randint a b 来自随机模块 http docs pytho
  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 如何在python 3.7中生成条形码

    我正在使用 python 3 7 为了生成条形码 我尝试使用安装 pyBarcode 库pip install pyBarcode 但它显示以下错误 找不到满足 pyBarcode 要求的版本 来自版本 找不到 pyBarcode 的匹配分
  • Sublime Text 插件开发中的全局 Python 包

    一 总结 我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包 而不是 Sublime Text 目录的 Python 包 Sublime Text使用自己的Python环境 而不是
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 没有名为 StringIO 的模块

    我有Python 3 6 我想从另一个名为 run py 的 python 文件执行名为 operation py 的 python 文件 In operation py I do from cStringIO import StringI
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • 使用 python 绘制正值小提琴图

    我发现小提琴图信息丰富且有用 我使用 python 库 seaborn 然而 当应用于正值时 它们几乎总是在低端显示负值 我发现这确实具有误导性 尤其是在处理现实数据集时 在seaborn的官方文档中https seaborn pydata
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 在 keras 中保存和加载权重

    我试图从我训练过的模型中保存和加载权重 我用来保存模型的代码是 TensorBoard log dir output model fit generator image a b gen batch size steps per epoch
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0

随机推荐

  • Sidekiq Perform_later 无法与操作电缆一起使用

    我在我的应用程序中设置了基本的有线聊天功能 我有一个 after create commit 回调 它将消息发送到要广播到适当通道的作业 当设置为perform now时它可以正常工作 但当设置为perform later时则不起作用 Si
  • 将两个变量相除得到 NaN

    我正在学习 JavaScript 我当前的代码似乎适用于总价值 但我无法让我的部门代码发挥作用来显示每人的成本是多少 这似乎是问题所在 document getElementById costeach innerHTML Price eac
  • Android 浅色/深色主题操作栏文本

    我正在我的 Playground Android 应用程序中实现深色主题 并且正在努力将操作栏文本颜色设置为白色 下面是我的风格和颜色 操作栏的背景遵循 colorPrimary 这很棒 然而 两种颜色 浅色和深色 都是非常深色的颜色 并且
  • Android,从不同的活动在缓存中保存和加载位图

    我有一个需要在新活动中显示的位图 因此我对其进行缓存 并在打开的活动中尝试加载它 但出现 nullPointerException 我在这里保存图像 File cacheDir getBaseContext getCacheDir File
  • 如何压缩谷歌驱动器中的文件?

    有什么方法可以将大文件压缩成谷歌驱动器中较小的 zip 或 tar gz 文件吗 我试过谷歌应用脚本 https stackoverflow com questions 13259041 creating a zip file inside
  • 为什么 Chrome 不允许 Web Workers 在 JavaScript 中运行?

    如果我尝试通过 JavaScript 文件使用 Web Worker Chrome 会抛出错误 未捕获的安全错误 无法创建工作程序 无法从源 null 访问 path worker js 处的脚本 但如果我们直接通过 HTML 使用 它就允
  • JSF 2.0 和多重提交问题

    有人告诉我JSF 2 0自动处理多重提交问题 是对的吗 如果是 JSF 2 0 是如何做到这一点的 如果不是 在处理这个问题时必须注意哪些事项 以免留下任何陷阱 Thanks 这是由以下人员请求和维护的JSF 规范问题 559 http j
  • Magento 获取购物车单件商品价格(含税)税

    我有一个很奇怪的问题 我希望有人能帮助我解决这个问题 以下是影响我的问题的主要配置设置 管理面板中显示的目录价格包含税费 前端显示的目录价格包含税费 购物车中的商品显示不含税 因此它单独显示在小计附近 到目前为止一切都运行良好 问题出在自定
  • ESlint 抛出错误而不是警告

    是否可以使用 Eslint 抛出错误而不是警告 我正在与一个create react app并希望在我的团队中有一个非常严格的 lint 政策 并认为这可能是一个好的开始 那可能吗 max warnings可以达到这个目的 max warn
  • 为什么 UnixSystem().getUsername() 返回 null(Docker 中的 OpenJDK 17)

    以下代码适用于 OSX var hadoopInputFile org apache parquet hadoop util HadoopInputFile fromPath parquetPath new Configuration 但在
  • 日期时间中不包括周末

    我只想知道如何计算日期时间而不包括周末 目前正在制作一个图书馆系统 图书馆周末不开放 这就是为什么我需要计算不包括周末的日期 前任 2015 年 3 月 13 日 星期五 我借了 5 天 所以 返回日期应该是 03 20 15 星期五 因为
  • Django Rest框架如何更改:“此字段不能为空。”错误信息

    当我尝试创建新的用户模型时 我收到以下验证错误响应 HTTP 400 Bad Request Allow POST OPTIONS Content Type application JSON Vary Accept phone This f
  • NGINX try_files + 别名指令

    我正在尝试使用 php 代码向站点的 blog 子目录提供请求 该代码位于文档根目录之外的文件夹中 这是我的主机配置 server server name local test ru root home alex www test2 loc
  • ActionListener 未实现

    JFrameWithPanel 不是抽象的 不会重写 java awt event ActionListener 中的抽象方法 actionPerformed java awt event ActionEvent 公共类 JFrameWit
  • Javascript 中 (1).toString() 和 1.toString() 内部发生了什么[重复]

    这个问题在这里已经有答案了 在 JavaScript 控制台中 如果输入以下内容 1 toString Uncaught SyntaxError Invalid or unexpected token 1 toString 1 这两条语句在
  • css 圆圈内中间对齐图标字体

    我正在尝试将图标居中对齐在圆圈内 我正在使用 font awesome 的图标字体 我的代码如下 ul li a href i class icon 5x icon camera i a li li a href i class icon
  • Ruby - 按属性降序对对象数组进行排序

    我有这个 Json 对象数组 students id 1 first name John last name Doe age 14 id 2 first name Victoria last name Secret age 9 id 3 f
  • 在android中动态添加选项卡

    在我的应用程序中 我想通过单击按钮动态添加选项卡 我该如何添加 其余的 GUI 应与原来相同 仅应添加选项卡 这是 xml 文件
  • 为什么在映射定义中需要转义 bar Ex 命令分隔符,但在 Vim 的命令行中不需要转义?

    我不明白为什么以下命令会做不同的事情 粘贴在 vimrc文件中 这两个命令都定义了通过按触发的映射的两个版本t在普通模式下 nnoremap t call search m a b W
  • 使用 Python 在 LibreOffice 中创建流程图

    关于如何使用 Python 控制 LibreOffice 文本文档和电子表格的示例有很多 但关于如何使用绘图程序的文档却很少 我试图弄清楚如何使用 Python 在 LibreOffice 中绘制流程图或至少某些形状 我使用的是 Windo