@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

CSVファイルからの取込編集ができない。

投稿者投稿内容
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2003-12-06 11:07
いつも参考にさせていただいてます。
現在ASP.NETで開発を行っています。
実現したいことはCSVファイルを読み込んで配列に入れてデータベースに登録すると
いう処理です。データは以下のようなカンマ区切りです。

例--------------------------------------------------

"A","B","C","D,"

----------------------------------------------------
SPLIT関数でカンマで区切って行えば良いのかなぁと思ったのですが上記の例のように
データ内にカンマ(,)があるとうまく配列に格納できません。
どなたかほかにやり方をご存知の方、ご教授願います。
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2003-12-06 13:20
.NETでCSVを読み込むクラスってあるかわかんないですが、
JavaではCSVTokenizerっていうのを作成した方がいまして、
さらに、ソースも添付されているので、それを.NETに移植してはいかがでしょう?
CSVTokenizerはグーグルで検索をすれば、すぐ見つかります。

_________________
_/_/_/
_/うちの会社の変なところ〜
_/1条.毎年300人新卒採用
_/2条.大事な事項(就業規則等)の変更発表は、施行前日
_/(以下略)
Masa
会議室デビュー日: 2002/08/13
投稿数: 16
投稿日時: 2003-12-06 14:21
まさです。

 CSVファイルの編集ですが、当然カンマ区切りではデータ中にカンマがあると
うまくいきませんよ。区切り文字とみなされます。

 カンマを除いた形でデータを出力することが出来ないのであれば、ダブルクォーテーションにくくられた範囲を一項目として処理するようなロジックを自分で
作るしかないのではないでしょうか。
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2003-12-06 14:23
アティさん、返答ありがとうございました。
私の日本語の書き方が悪かったようです。申し訳ありません。
取り込み自体は出来ているのですが
それをカンマ編集で配列に入れる時、データにカンマがある場合、
うまく配列に入ってくれないというのが今回の問題なんです。
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2003-12-06 14:28
Masaさん返答ありがとうございました。
(1つ前の私の投稿した時間と同じくらいだったので気づきませんでした。すみません。)
いろいろ考えた結果、やはりMasaさんの投稿と同じようにそういうロジックを組んで
あげるしかなさそうです。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2003-12-06 16:21
ども。がると申します。
CSVファイルは、実はきちんとした規約がないので面倒がおおいですね。

昔少し調べて、とりあえず比較的どこでも持ち込めそうなところまで
規約を整理してみたのですが。
基本的には

・データは,(カンマ)で列方向を、改行で行方向を区切る
・データに,(カンマ)または改行がある場合は、データ全体を
"(ダブルクォーテーション)で囲む
・データに"(ダブルクォーテーション)がある場合は、データ全体を
"で囲み、データの"は二重にする(""とする)

で、とりあえず一通りのデータが確保できるようです。
手っ取り早い確認手段は、ExcelあたりでCSV保存をしたり、CSVファイルを
取り込ませてみると判断しやすいかと思います。

で。
上記のロジックで作ると結構面倒だとは思うのですが(改行コードの判定とかも
あるので)、汎用のClassにするのでなければ、とりあえず必要な部分の
実装だけでもよいのかなぁ、と。

がんばってみてください(^^
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-12-06 16:49
unibon です。こんにちわ。

.NET ではありませんが、昔、それっぽいものを VBScript で作ったことがあります。
http://www.geocities.co.jp/SiliconValley/4334/unibon/sql/getcsv.html
ただしダブルクォーテーションで囲まれた改行までは対応できていません。
#というか書いたあとにそんな仕様があるということを知りました。
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2003-12-06 18:55
ども、アティです。
うーん、よく分からないのですが、CSVファイルを読み込むときではなく、
書き込むときのことを言っているのでしょうか?(なんか違うような気がする...)
でも、CSVTokenizerは、CSVファイルの読み込み、要素の取り出し、要素の書き出しも、
できたと思いますよ。
あ、もう時間だ。それでは、これから会社の同期と鍋つつきに言ってきます。
ではでは〜

引用:

ななさんの書き込み (2003-12-06 14:23) より:
アティさん、返答ありがとうございました。
私の日本語の書き方が悪かったようです。申し訳ありません。
取り込み自体は出来ているのですが
それをカンマ編集で配列に入れる時、データにカンマがある場合、
うまく配列に入ってくれないというのが今回の問題なんです。




_________________
_/_/_/
_/うちの会社の変なところ〜
_/1条.毎年300人新卒採用
_/2条.大事な事項(就業規則等)の変更発表は、施行前日
_/(以下略)

スキルアップ/キャリアアップ(JOB@IT)