【问题标题】:Converting LibreOffice Calc URLs to text将 LibreOffice Calc URL 转换为文本
【发布时间】:2022-01-14 03:33:31
【问题描述】:

我有一个 LibreOffice 3 电子表格(在 Ubuntu 11.04 上),其中有一列包含数百个超链接,这些超链接仅显示为“链接”。

我需要将它们转换为纯文本,或者更糟糕的是显示超链接而不是文本“链接”的超链接。是否有一个函数可以做到这一点,或者可能有一个方法可以在整个电子表格中做到这一点?

【问题讨论】:

    标签: libreoffice-calc


    【解决方案1】:

    您可以使用宏。

    我测试过的唯一一个is this one

    如果您没有使用宏的经验,以下是所涉及的步骤:

    1. 复制该链接提供的宏。
    2. ALT + F11 打开宏管理器。
    3. 在“我的宏”下选择“模块 1”并点击“编辑”
    4. 粘贴您复制的宏代码。
    5. 保存并关闭您的宏

    现在,您可以访问一个名为“CELL_URL”的宏,您可以按如下方式使用它:

    假设您的链接从“SHEET 1”上的“CELL A1”开始,我建议您转到新工作表,并在第一个单元格中输入:=CELL_URL("SHEET 1",ROW(),COLUMN())。然后,您可以根据数据的维度拖动该公式。

    或者,另一个示例,假设您有一个包含 20 个链接的列,从“SHEET 1”上的“CELL B5”开始,并且您希望 URL 位于它旁边的列中(因此,从“CELL C5”),在“CELL C5”中,输入公式如下:=CELL_URL("SHEET 1", ROW(), COLUMN()-1)注意 -1。这告诉函数从比当前位置少一列的单元格中提取 URL。然后,将公式从“CELL C5”拖到“CELL C24”,链接结束。


    更新:

    该 URL 似乎无法解析。幸运的是,有 WayBack 机器:http://web.archive.org/web/20120713222701/http://www.oooforum.org/forum/viewtopic.phtml?t=32909

    我还将宏作为 Gist 发布:https://gist.github.com/mrdwab/14c9e81dfbc867351bd3

    如 cmets 中所述,您可能需要在使用 CELL_URL() 函数时将“SHEET 1”更改为“Sheet1”。

    【讨论】:

    • 非常感谢 - 我会尽快测试并发布我的结果
    • 好提醒!不幸的是,仍然在我的待办事项清单上,但你已经促使我继续做下去。也许这个周末的工作。完成后我会尽快反馈
    • 我刚才试了一下,效果很好。它是“Sheet1”,我没有空格——使用时只需仔细查看工作表选项卡即可。
    • 嗯 - 您指向的链接无法为我解析 - 有人有相关宏的副本吗?
    • CELL_URL 也有这个,quoting from here:"可选参数允许从第一个超链接以外的另一个 URL 提取 URL(默认 = 1 表示第一个超链接)。通过使用它,您可以浏览单元格上存在的许多链接,并选择您需要的链接。
    【解决方案2】:

    这是另一种方法,使用 Unix 命令行工具 - 完全绕过 Calc。

    首先,解压缩您拥有的 .ods 作为 zip;示例:

    $ cd /tmp
    $ mkdir my_ods_unpack
    $ cd my_ods_unpack
    $ unzip /path/to/my.ods
    

    解压后查看./content.xml,发现所有的URL都用双引号括起来";因此我们可以编写以下grep 行:

    $ grep -ro 'http[^"]*' .
    ./meta.xml:http://www.w3.org/1999/xlink
    ./meta.xml:http://purl.org/dc/elements/1.1/
    ./meta.xml:http://openoffice.org/2004/office
    ...
    

    ...一旦到达./content.xml,您应该开始看到已放入文档中的 URL。

    【讨论】:

    • 这种方法非常适合我的用例 - 谢谢!
    【解决方案3】:

    如果您想将 URL 嵌入到 office calc 中的单元格中,您可以按以下方式访问它:

    cell1.TextFields.getByIndex(0).URL
    

    cell1是使用UNO得到的cell对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多