我编写了一个运行 unoconv 的脚本,将 csv 转换为 xls。
我使用 openssh 客户端连接到脚本所在的服务器来运行它,并且工作正常。 (始终是同一个 Linux 用户...)
但是,当其他人在 Windows 中使用 putty 运行该脚本时,unoconv 会失败,将数字呈现为文本。
该脚本始终在 Linux 服务器上运行。
不同之处在于某些字段前面带有“'”(单引号)。例如,假设一个字段有: 0,80 当在 Windows 上使用 putty 运行时,它会产生'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
我需要转换“.” por "," 如果从 Linux 客户端运行脚本,否则无法预先添加单引号。
也许有更好的解决方案,但现在对我来说效果很好。