質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

解決済

【エラーが特定できません】CSVデータをデータテーブルに文字列として取り込みたい

hazuki
hazuki

総合スコア0

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1回答

0評価

1クリップ

16閲覧

投稿2017/11/02 06:14

【CSVデータをデータテーブルに文字列として取り込みたい】という質問を前回し、iniファイルを使えば出来そうなことを確認したので、今回その方法を試してみました。

テキストファイルの名前がその都度変わるので、1つのiniファイルを埋め込まれたリソースとして持っておき、それを毎回ローカルにコピーし、CSVデータも名前を固定の物に変えてコピーしたものを同じディレクトリに入れています。

ファイル作成、コピーまではうまくいくのですが、データテーブルに入れようとするところで【エラーが特定できません】と落ちてしまいます・・・分かる方がいましたらよろしくお願いします。

vb.net

Private Function Fun_CopyFile() As String '現在のコードを実行しているAssemblyを取得 Dim myAssembly As System.Reflection.Assembly = _ System.Reflection.Assembly.GetExecutingAssembly() '指定されたマニフェストリソースを読み込む Dim sr As New System.IO.StreamReader( _ myAssembly.GetManifestResourceStream("STR.schema.ini"), _ System.Text.Encoding.GetEncoding("shift-jis")) '内容を読み込む Dim s As String = sr.ReadToEnd() '後始末 sr.Close() '書込むファイルを指定する(2番目の引数をfalseにすることで新規ファイルを作成する) Dim iniFileName As String = "schema.ini" Dim csvFileName As String = "STR.csv" Dim Directory As String = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) Dim iniFilePath As String = Directory & "\" & iniFileName Dim csvFilePath As String = Directory & "\" & csvFileName System.IO.File.Copy(Me.IEdt_CSVファイル.Text, csvFilePath, True) Dim sw As StreamWriter = New StreamWriter(iniFilePath, False, System.Text.Encoding.GetEncoding("shift-jis")) Try 'ファイルに書込む sw.Write(s) sw.Flush() sw.Close() Catch ex As Exception End Try Return csvFilePath End Function

vb.net

Public Shared Function ToCsvIn(ByVal Str_FilePath As String) As DataTable 'CSVファイルのあるフォルダ Dim csvDir As String = System.IO.Path.GetDirectoryName(Str_FilePath) 'CSVファイルの名前 Dim csvFileName As String = System.IO.Path.GetFileName(Str_FilePath) '接続文字列 Dim conString As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ + csvDir + ";Extended Properties=""text;HDR=No;FMT=Delimited""" Dim con As New System.Data.OleDb.OleDbConnection(conString) Dim commText As String = "SELECT * FROM [" + csvFileName + "]" Dim da As New System.Data.OleDb.OleDbDataAdapter(commText, con) 'DataTableに格納する Dim dt As New DataTable Try da.Fill(dt) '★ここでエラーが特定できませんでおちます Catch ex As Exception Debug.WriteLine(ex.Message) End Try Return dt End Function
[STR.csv] Format=CSVDelimited ColNameHeader=false MaxScanRows=0 CharacterSet=Shift_JIS textacterSet=932 Col1=a1 text Col2=a2 text Col3=a3 text . . . というようなiniファイルです

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。