打开 CSV 文件并直接进入电子表格

打开 CSV 文件并直接进入电子表格

我的软件的一部分发出各种命令来打开和查看不同的文件类型。例如,我用于atrilPDF 和eomPNG。
不过我对 CSV 文件有一个小问题。我可以打开它们,soffice –calc <filepath>但每次它都会经历导入阶段。
有没有办法可以避免这种情况,以避免用户产生问题的风险,因为格式是一致的,并且我需要包含的唯一分隔符是逗号,

提前致谢。

答案1

跳过导入的方法是将文件转换为无需导入即可读取的格式 - 例如:

soffice --headless --convert-to ods --outdir /tmp tblIssues.csv
soffice --view /tmp/tblIssues.ods
rm /tmp/tblIssues.ods

这会将文件转换tblIssues.csv为 ODS 电子表格,将其保存/tmp并在 Libreoffice 中打开。完成后,它将删除转换后的文件(可选)。

--view选项以只读方式打开文件,并隐藏编辑所需的 GUI 元素,使 LibreOffice 作为查看器更加实用。

您还可以使用其他格式,例如 PDF ( --convert-to pdf),然后您可以使用其他查看器,例如atril.

请注意,我认为 libreoffice Convert 命令可能会使用用户最后在导入器中使用的设置,因此如果将其设置为使用除此之外的分隔符,则,可能无法工作。

另外,您可以修改命令以...

  • 隐藏输出:

    COMMAND > /dev/null 2>&1
    
  • 与终端分开:

    COMMAND & disown
    

答案2

  1. 安装unoconv(只需一次)

    • 在 Ubuntu 上运行sudo apt-get install unoconv
    • 在 RHL/CentOS 上运行sudo yum install unoconv
  2. 在命令行或批处理模式(非交互式)上进行转换

    • unoconv -f pdf /pathto/file.csv /pathto/file.pdf 2>/dev/null

就是这样!

笔记:

我将标准错误通过管道传输到 /dev/null ,因为我收到一个“看起来”像是转换失败的错误,但实际上它成功了。当我运行unoconv -f csv /tmp/this.csv /tmp/this.pdf错误输出时:

unoconv: UnoException during export phase: Unable to store document to file:///tmp/this.pdf (ErrCode 19468)

但该文件确实是在 /tmp/this.pdf 创建的,并且我已通过 pdf 查看器确认该文件是完美的。

我不知道为什么,但我猜测错误是因为我没有运行侦听器。也许这里的其他人会解决这个问题;-)

无论如何,如果您需要从转换中返回退出 0(例如,puppet 或 Chef 可能需要),请像这样运行转换:

unoconv -f pdf /pathto/file.csv /pathto/file.pdf 2>/dev/null || /bin/true

最后,unoconv csv 转换默认为“逗号分隔”,幸运的是,这适合您。如果您想使用不同的和/或多个分隔符,请阅读手册页以查看导入过滤器选项。

相关内容