いつも勉強させていただいております。
仕事でVB.NETの勉強をすることになり、参考書などで勉強している初心者です。
業務で気になった処理を、(勉強の意味が強いのですが)プログラム化できないかと思い
VBに関するサイトを見てまわったのですが、理解ができず
相談させていただきました。
※最終的にもっと違う形で作りたいとは思います
###前提・実現したいこと
不変型のテキストファイルを読み込み、いらない部分を削除(""を省くなど)したのち
csvファイルへ変換・保存したいと考えています。
1行ごとに取り出し、変換するところまでは理解ができたのですが
csvへ書き込む際の方法がわからず、質問させていただきました。
###問題点
・textファイルをcsvファイルに変換する際に、配列へ変換したのですが
この作業は不要かどうかがわかっておりません。
(```sbArray = Split(sb, ",")`` の部分です)
・1行ずつ変換して書き込みをする処理なので、
「StreamWriter」で記載をしても処理が可能なのかわかりませんでした
(テストしてみたのですが、上手くできませんでした)
###該当のソースコード
ファイルは以下のような構成で、テキストファイルに格納されています。
行は100行ほどあり、全てが埋まっているのではなく、空白の項目もあります。
text
1A,"B","C","D","E","F","G","H","I","J","K","M"
VB.NET
1Public Class FailConversion 2 3 4 'ファイル選択ボタンを押したとき 5 Private Sub ChoiceBtn_Click(sender As Object, e As EventArgs) Handles ChoiceBtn.Click 6 7 'ファイルを開くダイアログを指定 8 Dim ofd As New OpenFileDialog 9 10 'ファイルの種類をtxtのみに指定 11 ofd.Filter = "テキスト文書(*.txt)|*.txt|すべてのファイル(*.*)|*.*" 12 13 'タイトルを設定 14 ofd.Title = "開くファイルを選択してください" 15 16 'OKを押した後にファイル名を表示 17 If ofd.ShowDialog() = DialogResult.OK Then 18 FileName.Text = ofd.FileName 19 End If 20 End Sub 21 22 'ファイル変換ボタンを押したとき 23 Private Sub ExecutionBtn_Click(sender As Object, e As EventArgs) Handles ExecutionBtn.Click 24 'ファイルのパス 25 Dim fp As String = FileName.Text 26 'ファイルを読み込みで開く 27 Dim sr As New System.IO.StreamReader(fp) 28 29 '一時ファイルを作成する 30 Dim tp As String = System.IO.Path.GetTempFileName() 31 '一時ファイル書き込みで開く 32 Dim sw As New System.IO.StreamWriter(tp) 33 34 35 'データ入力用の配列を設定 36 Dim sbArray As String 37 38 '読み込みできる文字がなくなるまで繰り返す 39 While (sr.Peek() >= 0) 40 41 '1行を読み込み、stringBuilderを作成する 42 Dim sb As New String(sr.ReadLine) 43 44 '区切り用の「""」を省き、空白へ変換 45 sb.Replace("""", "") 46 47 'データを分割する(sbArray配列へ変換) 48 sbArray = Split(sb, ",") 49 50 'データを一時的に配列へ保存 51 sw.WriteLine(sbArray) 52 53 54 End While 55 56 End Sub 57End Class 58
###補足情報(言語/FW/ツール等のバージョンなど)
PC:windows10 64bit
VB:Visual Studio2017
回答1件
あなたの回答
tips
プレビュー