- PR -

ASP.NET(VB)でCSVファイルを取り込む方法

1
投稿者投稿内容
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2003-02-20 10:30

いつも拝見してます。

ASP.NETでCSVファイルを以下のユーザ定義に取り込みたいのですが、
ファイルが取得できなくて困っています。ソース書きます。

------------------------------------------------
Private Structure typUserMSG
Dim strSubSys As String 'サブシステム
Dim lngMsgNo As Integer 'メッセージ番号
Dim strMsgCode As String 'メッセージコード
Dim strTitle As String 'メッセージタイトル
Dim strMsg As String 'メッセージ
Dim intIcon As Short 'アイコン
Dim intBtn As Short 'ボタン
Dim intDefBtn As Short 'デフォルトボタン
End Structure

Private udpMSG() As typUserMSG 'メッセージファイル情報
Public gstrAppPath As String = Server.MapPath("..\TestMsg\Msg.txt") 'ファイルのパス
'ファイル情報取得
strMsgPath = gstrAppPath

'読み込み用バッファ初期化
Erase udpMSG


'読込みの為、ファイルオープン
lngFileNo = FreeFile()
FileOpen(lngFileNo, strMsgPath, OpenMode.Output)

' ファイルの終端までループを繰り返し、メッセージをセットアップ
'配列の添え字を初期化
intCnt = 0
Do While Not EOF(lngFileNo)
intCnt = intCnt + 1
'読み込み用バッファ定義
ReDim Preserve udpMSG(intCnt)
Input(lngFileNo, udpMSG(intCnt).strSubSys)
Input(lngFileNo, strMsgNo)
Input(lngFileNo, udpMSG(intCnt).strMsgCode)
Input(lngFileNo, udpMSG(intCnt).strTitle)
Input(lngFileNo, udpMSG(intCnt).strMsg)
Input(lngFileNo, strIcon)
Input(lngFileNo, strBtn)
Input(lngFileNo, strDefBtn)
udpMSG(intCnt).lngMsgNo = CInt(strMsgNo)
udpMSG(intCnt).intIcon = CShort(strIcon)
udpMSG(intCnt).intBtn = CShort(strBtn)
udpMSG(intCnt).intDefBtn = CShort(strDefBtn)
Loop

mintWrk_KENSU = intCnt

------------------------------------------------

です。ファイルオープンまではいくのですが、そこからの
while文でEOFになるのです。もちろんデータは入っています。

みなさんはCVSファイルよりXML形式のファイルを取り込む方が
多いと思うのですが、もしよろしければCVSファイルを取り込む
方法を教授してください。よろしくお願いします。
未記入
ベテラン
会議室デビュー日: 2002/09/10
投稿数: 68
投稿日時: 2003-02-20 11:45
System.IO.StreamReader を使う方法を試されてみてはいかがですか?

詳しい使い方は
http://www.gdncom.jp/gdnj_g-ml/ML/gdnj_tech/index.asp
で"CSV"で検索したり、クラスのヘルプを見ていただくと
わかるんじゃないかと思います。

ご参考になれば幸いです。
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2003-02-20 15:53
今日は

ttcoupeさんの
FileOpen(lngFileNo, strMsgPath, OpenMode.Output) は
FileOpen(lngFileNo, strMsgPath, OpenMode.Input)の間違いでは

又御参考に、あまりスマートでないですがStreamReaderを使った取り込み方法の例です
Dim i As Integer = 0
Dim sr As StreamReader = New StreamReader(strMsgPath)
Do While True
Dim tem As String = sr.ReadLine()
If tem Is Nothing Then Exit Do
Dim sp As String() = tem.Split(",")
ReDim Preserve buf(i)
udpMSG(i).strSubSys = sp(0)
udpMSG(i).lngMsgNo = Convert.ToInt32(sp(1))
・・・・・・・
i += 1
Loop
sr.Close()
1

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