maru26
(marusan)
1
あるシステムでCSV形式で出力したファイルを
Read CSVで読み取ろうとすると
“The CSV file format for ファイル名 is invalid”
というエラーが出てしまいます。
普通にエクセルでは開くことができ、またエクセルで上書き保存してからだと
そのファイルはRead CSVを行うことができます。
メモ帳で開いてみると、値がダブルクォーテーションで囲まれており
エクセルで保存したものはダブルクォーテーションが外されていました。
文字コードは”shift_jis”を設定しています。
よろしくお願いします。
Honoka
(Honoka Hayasaka)
2
一番よくある原因は、CSVのヘッダ行(または1行目)の列数より、列(カラム)が多い行があることだと思います。
なので、まずはCSVのデータを確認してみてください。
その場合に考えられる対処法は、
-
CSVを出力するソフト側で修正してもらう
何をもって正しいCSVと言うかは難しいのですが、RFC 4180で規定されているCSVのフォーマットは「各行の列数は同じ」が前提です。
現実的に修正してもらえるかはケースバイケースなのですが。
-
Excelで開く
Excel Application Scopeで開けば、一応開ける筈です。この場合シート名はCSVのファイル名から拡張子を外したものになるので、
System.IO.Path.GetFileNameWithoutExtension(CSVファイル名)
で取得できます。
- テキストファイルとして修正する
余分なカンマがある、あるいは列名が足りないなら、Read Text Fileで読んで修正したあと、改めてCSVとして開き直す方法もあります。
とりあえずは原因確認が先なのですが、参考になれば。
3 Likes
maru26
(marusan)
3
ご返信ありがとうございます。
ご指摘の通り、ヘッダ行と他の行と列数が異なっていました。
1のソフトを修正することはすこし難しそうです。
2のExcel Application Scopeは元々使用していましたが、
過去に質問しましたがちょっとした問題があり、Read CSVを使用しようと思いました。
3はまだ試したことが無い方法です。試してみたいと思います。
原因が分かったので大変助かりました。
ありがとうございました。