将包含json的excel单元转换为csv

时间:2014-04-22 00:54:40

标签: php json excel csv

我有一系列xlsx格式的测试用例,我需要将其转换为csv文件,但是有些行的json片段与直接文本混合在一起,并且还有换行符(/ n)(返回)在细胞内。这使得转换为csv成为一场噩梦。我试图将我的测试用例转换为csv,以便将它们导入Test Rail应用程序(建议使用php脚本,但由于csv无法使用json内容分隔单元格,因此脚本无法正常工作,等等)请帮忙!

脚本需要:标题,类型,优先级,步骤,结果

xlxs文件中的第1行数据(office 2011 for mac)包含: 标题:测试1, type:文本中的一些测试类型,即' regression' 优先:一些文字,即' high', 步 : 创建仅包含基本访问历史记录规则的已启用配置文 即:json身体:

{
  "name": " Basic Rule Only",
  "description": ""a basic rule only"
  } 
}

结果:包含一些带有ctrl + alt +选项的文本btwn句子如: 验证400错误请求返回时出现类似错误消息'请求内容格式错误: 未找到密钥:名称。'

4 个答案:

答案 0 :(得分:0)

最好的办法是编写一个脚本来直接从xlxs文件中获取数据。 xlsx文件只是一个标准的zip文件,其中包含XML文件,其中包含数据和包含样式的其他一些文件。您选择的语言可能已经有了一个可以使用的XLSX解析器。

如果您想坚持使用CSV路线,Excel 2013似乎会在\ n中的CSV字段中导出换行符,并使用\ r \ n作为记录结尾,这样您就可以使用它来区分新行嵌入在字段和记录的末尾取决于您如何解析CSV文件,即:使用不支持该细微差别的库,然后直接读取xlsx可能仍然更容易。

答案 1 :(得分:0)

如果您进入Excel和文件/另存为然后选择CSV,即使其中包含CR / LF的单元格以及嵌入式引号也会根据CSV惯例正确保存。具体做法是:

  • 任何带逗号或CR / LF的单元格都会被引用
  • 引用单元格中的任何引用都将保存为两个引号("")

刚试过这个。

任何可以根据CSV规范读取文件的应用程序都应该能够读取正确引用和转义的CSV。

答案 2 :(得分:0)

正如@ Erik-j建议的那样,如果将数据集从Excel导出为csv格式,那么任何符合csv的应用程序都应该能够读取它。如果Excel可以读回Excel导出的csv,那么数据集就可以了,而且你有一个不兼容的阅读器。

csv的问题在于格式非常模糊(例如分隔符不同),唯一有效的参考规范是Excel本身。 (http://en.wikipedia.org/wiki/Comma-separated_values#Toward_standardization)。

如果您不能使用其他更严格定义的交换数据格式(例如基于xml),那么请使用Test Rail建议的PHP脚本(您可能正在引用这个 - http://docs.gurock.com/testrail-admin/migration-csv)并修复它

这个Simplest way to read an csv file using php StackOverflow答案应该指导你

答案 3 :(得分:0)

事实证明,这是因为我使用的是Mac版的Excel,它使用\ r作为行尾,而不是我的脚本所期望的(\ n或\ r \ n)。我使用Sublime Text转换为\ n,我的脚本按预期将csv解析为我的数组。如果没有你所有有用的建议,我不会得出这个结论,所以感谢你的回复!