11 votes

Ruby : impossible d'analyser un fichier Excel exporté en CSV sous OS X

J'utilise la bibliothèque CSV de Ruby pour analyser un fichier CSV. J'ai un fichier CSV apparemment bien formé que j'ai créé en exportant un fichier Excel au format CSV.

Cependant CSV.open(filename, 'r') provoque un CSV::IllegalFormatError .

Il n'y a pas de virgules ou de guillemets indésirables dans le fichier, ni rien d'autre que je puisse voir qui pourrait causer des problèmes.

Je pense que le problème pourrait être lié aux fins de ligne. Je suis capable d'analyser les données saisies manuellement via un éditeur de texte (Aquamacs). Ce n'est que lorsque j'essaie avec des données exportées d'Excel (pour OS X) que les problèmes surviennent. Quand j'ouvre le CSV exporté dans vim, tout le texte apparaît sur une seule ligne, avec ^M apparaissant entre les lignes.

D'après les documents, il semble que vous pouvez fournir open avec un séparateur de ligne ; cependant, je ne suis pas sûr de ce qu'il doit être dans ce cas.

0voto

wawka Points 237

J'ai eu un problème similaire. J'ai eu une erreur :

"error_message"=>"Illegal quoting in line 1.", "error_class"=>"CSV::MalformedCSVError"

Le problème était que le fichier avait des fins de ligne Windows, qui sont bien sûr différentes de celles d'Unix. Ce qui m'a aidé, c'est de définir row_sep : " \r\n " :

CSV.open(path, 'w', headers: :first_row, col_sep: ';', quote_char: '"', row_sep: "\r\n")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X