私のソフトウェアの一部は、さまざまなファイル形式を開き、表示するさまざまなコマンドを実行します。たとえば、atril
PDFとPNGを使用しますeom
。
しかし、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
unoconvのインストール(一度だけ)
- Ubuntuで実行
sudo apt-get install unoconv
- RHL/CentOSで実行
sudo yum install unoconv
- Ubuntuで実行
コマンドラインまたはバッチモードで変換(非対話型)
- unoconv -f pdf /pathto/file.csv /pathto/file.pdf 2>/dev/null
それだけです!
メモ:
変換が失敗したかのように「見える」エラーが発生するため、stderrを/ 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変換は基本的に「カンマで区切られています。これは幸運にも機能します。異なる区切り記号および/または複数の区切り記号を使用するには、マニュアルページを読み、インポートフィルタオプションを確認してください。