csvをxlsに変換するためにunoconvを実行するスクリプトを作成しました。
opensshクライアントを使用してスクリプトを含むサーバーに接続して実行しましたが、正常に動作しました。 (常に同じLinuxユーザー...)
しかし、他の人がWindows上でputtyを使用してスクリプトを実行すると、unoconvは失敗し、数字はテキストとしてレンダリングされます。
このスクリプトは常にLinuxサーバー上で実行されます。
違いは、一部のフィールドの前に「」(単一引用符)が付いていることです。たとえば、フィールドに次のものがあるとします。 0,80 Windowsでパテを使用して実行すると、次のようになります。'0,80 unoconv バージョンは
unoconv 0.7 Written by Dag Wieers <[email protected]> Homepage at http://dag.wieers.com/home-made/unoconv/
platform posix/linux2 python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] LibreOffice 4.2.8.2
このような違いが発生するのはなぜですか?
答え1
私はその理由を見つけました:
以前私のスクリプトはsedにすべての"。"そして、「、」を置き換えるように命令しました。
なぜなら、私たちが使う小数点の区切り記号だからです。
unoconvがこの問題をきちんと管理していることがわかりました。
https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options
解決策が見つかりました。
echo "Se esta conectando desde Windows o Linux (físico)?. Elija el SO por favor. Escriba 'Windows' o 'Linux'."
read OS
if [[ $OS = Linux ]];then
sed -i 's/\./,/g' ${ARCHIVOINFO}.csv
fi
Linuxクライアントでスクリプトを実行している場合は「.」または、「、」を変換する必要があります。それ以外の場合は、単一引用符を前に付ける方法はありません。
おそらくより良い解決策があるかもしれませんが、今私はうまくいきます。