前提・実現したいこと
カンマ区切り(,)かつフィールドをダブルクォート(")で囲まれているCSV形式のファイルを
DDataTableにInsertしたいです。
発生している問題・エラーメッセージ
以下のサイトを参考に実装しました。
CSV形式のファイルをDataTableや配列等として取得する
デバック中に該当のDataTableを右クリックして「ウォッチ式に追加」→「虫眼鏡マーク」
→「DataSetビジュアライザー」にて、中身を確認したところ文字化けを起こしていました。
念のためDataGridViewに表示して確認しましたがが同様に文字化けを起こしていました。
※Jet Provider、ODBC Provider両方でこの文字化けが起きました。
問題の考察
文字コードが関係しているのかと勝手に思っています。
今回、読み込む元となったCSV形式のファイルの文字コードは「UTF-8 BOM付き」です。
読み込む元の文字コードが変わる恐れはなさそうなのですが、できればどんな文字コードでも
対応できるようにしたいです。
また、DataTableには1行目をヘッダとして登録したいです。
なお、今回CSV形式のファイルをDataTableにInsertする機能を実装したいという背景には
CSV形式のファイル内のデータに対して並び替え、データの抽出を行いたいためというのがあるためです。
解決できず、とても困っています。
どうぞ、よろしくお願い申し上げます。
【追記】Jet Provider使用
'CSVファイルのあるフォルダ
Dim csvDir As String = "C:\test"
'CSVファイルの名前
Dim csvFileName As String = "test.csv"
'接続文字列
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
da.Fill(dt)
補足情報(FW/ツールのバージョンなど)
Visual Studio 2015
VB.NET

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。