如何在 Unix 中将 .xls 转换为 .csv
How to convert .xls to .csv in Unix
我有一个文本文件 (abc.txt),其中包含要转换为 .csv 的文件名和路径。下面是我写的脚本:
{while IFS= read -r f ; do
filename="${f%.*}"
ssconvert ${filename}.xls ${filename}.csv
done < abc.txt}
问题是文件 .xls 文件名中包含 space。所以脚本不起作用,说:
Unable to guess exporter to use for 'file:
您应该将以下内容括在双引号中以防止通配和分词:
ssconvert "${filename}.xls" "${filename}.csv"
还在大括号和 next/previous 对象之间包含一个 space { ... }
:
{ while IFS= read -r f ; do
filename="${f%.*}"
ssconvert "${filename}.xls" "${filename}.csv"
done < abc.txt ; }
注意:如果您仍然遇到评论中提到的 "export type" 错误的问题,可以尝试 ssconvert "${filename}".xls "${filename}".csv
,因为我不熟悉它需要的确切语法。您可以使用在线工具 shellcheck.net.
轻松检查您的脚本
我有一个文本文件 (abc.txt),其中包含要转换为 .csv 的文件名和路径。下面是我写的脚本:
{while IFS= read -r f ; do
filename="${f%.*}"
ssconvert ${filename}.xls ${filename}.csv
done < abc.txt}
问题是文件 .xls 文件名中包含 space。所以脚本不起作用,说:
Unable to guess exporter to use for 'file:
您应该将以下内容括在双引号中以防止通配和分词:
ssconvert "${filename}.xls" "${filename}.csv"
还在大括号和 next/previous 对象之间包含一个 space { ... }
:
{ while IFS= read -r f ; do
filename="${f%.*}"
ssconvert "${filename}.xls" "${filename}.csv"
done < abc.txt ; }
注意:如果您仍然遇到评论中提到的 "export type" 错误的问题,可以尝试 ssconvert "${filename}".xls "${filename}".csv
,因为我不熟悉它需要的确切语法。您可以使用在线工具 shellcheck.net.