首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将.ods文件转换为.csv文件时替换或忽略新的行字符

在将.ods文件转换为.csv文件时替换或忽略新的行字符
EN

Stack Overflow用户
提问于 2014-05-15 14:55:50
回答 2查看 1.7K关注 0票数 4

我使用Gnumeric中的ssconvert命令将一组ODS文件转换为CSV文件:

ssconvert -O 'separator=; quoting-mode=never' "f.ods" "f.txt";

效果很好。大多数时候都是。有时,用户在单元格中插入一个新行字符的单元格(在Mac上的OpenOffice和LibreOffice中,您可以通过按cmd+enter来实现这一点)。这将导致随后创建的CSV文件获得一个额外的行,因此而不是

This is some text. Here comes a newline that should be ignored;Some data;Some more data

我得到了

This is some text. Here comes a newline that should be ignored;Some data; Some more data

在转换过程中,是否可以将单元格中的所有换行符替换为其他字符,例如*

或者,我可以将计算机设置为忽略单元格中的所有内联字符吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-27 18:09:16

你的问题是:

ssconvert -O 'separator=;quoting-mode=never'"f.ods" "f.txt";

如果必要的话,通过阻止ssconvert引用,您就会在这里开枪,而您的问题并不局限于换行符。例如,这个电子表格:

example.ods

由ssconvert命令转换为:

example.txt

代码语言:javascript
复制
A1;B1;C1
A2;XX;B2
YY;C2

祝你好运解开它。

与其试图在转换后消除混乱(这是不可能可靠的),也不是通过在转换之前对源ODS文件进行某种方式的预处理(这太疯狂了--如果您要转换为CSV --这大概是因为您想避免干扰ODS文档),您需要使用没有这种根本缺陷的CSV方言。

这意味着你需要你的数据被引用。事实证明,ssconvert不足以引用默认设置中包含分隔符的单元格:

代码语言:javascript
复制
$ ssconvert -O 'separator=;' example.ods example-2.txt
$ cat example-2.txt
A1;B1;C1
A2;XX;"B2
YY";C2

..。所以你需要引用所有的话:

代码语言:javascript
复制
$ ssconvert -O 'separator=; quoting-mode=always' example.ods example-3.txt
$ cat example-3.txt 
"A1";"B1";"C1"
"A2;XX";"B2
YY";"C2"

在CSV中没有可靠的解决方案;除了正确引用数据之外,您想出的任何解决方案都会在某个时候回来并咬你一口,因为未引用的CSV作为一种数据格式从根本上被打破了。

重申:不试图解决未引用的CSV中的这一基本缺陷。即使您认为您已经解决了使用模糊数据格式为自己创建的所有问题,但在某一时刻,您没有预料到的情况会出现,而且您会在空闲时后悔。

票数 8
EN

Stack Overflow用户

发布于 2022-08-10 15:57:28

另一种解决方案(在本例中用于xlsx文件)是:

  1. (如果尚未安装)安装xlsx2csv:apt或pip安装

  1. 使用选项-e,在多行单元格内,换行符将被\n替换。

重复使用@ZeroPiraeus的例子

代码语言:javascript
复制
$ xlsx2csv -e -d ';' example.xlsx

A1;B1;C1
A2;XX;B2\nYY;C2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23681880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档