DOBON.NETプログラミング道掲示板

No34114 の記事


■34114 / )  数字だけで構成されてるCSVフィールドが自動的に数値として解釈される
□投稿者/ Iraquser 一般人(1回)-(2019/02/05(Tue) 11:16:21)
  • アイコン環境/言語:[Win10 c#] 
    分類:[.NET] 

    いつもお世話になっています。「CSV形式のファイルをDataTableや配列等として
    取得する」(https://dobon.net/vb/dotnet/file/readcsvfile.html)を参考に、
    CSVから情報を読み取るアプリを作成中です。
    入力するCSVデータの中に数字のみで構成されたフィールドを含んでおり、先
    頭(最上位桁)が「0」の場合にエラーが発生して困っています。フィールドを
    構成する文字が数字だけのため自動的に整数型と判断されるようです。
    数字だけで構成されたフィールドも文字列として認識させるためには、それなり
    のコードを自分達で書くしかないのでしょうか。該当フィールドをダブルクォー
    テーションで囲むとか、schema.iniを同じディレクトリに作成するとかすれば解
    決する事は判っているのですが、CSVを吐くセクションが顧客資産の時代物(
    ソースが行方不明)で変更は事実上不可能、それなりのコードを自分達(?)で
    書く事は大人の事情でハードルが高い事を御理解の上で御指導お願いします。
    
    >        private void Form1_Shown(object sender, EventArgs e) {
    >            ReadCSV();
    >        }
    >        private void ReadCSV() {
    >            //CSVファイルのあるフォルダ
    >            string csvDir = System.Environment.CurrentDirectory;
    >            //CSVファイルの名前
    >            string csvFileName = "test.csv";
    >            //接続文字列
    >            string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    >                + csvDir + ";Extended Properties=\"text;HDR=No;FMT=Delimited\"";
    >            System.Data.OleDb.OleDbConnection con =
    >                new System.Data.OleDb.OleDbConnection(conString);
    >            string commText = "SELECT * FROM [" + csvFileName + "]";
    >            System.Data.OleDb.OleDbDataAdapter da =
    >                new System.Data.OleDb.OleDbDataAdapter(commText, con);
    >            //DataTableに格納する
    >            DataTable dt = new DataTable();
    >            da.Fill(dt);
    >        }
    
    入力データ
    >001,01234
    >012,ABCDE
    >123,あいうえお
    
    
    

286×193 => 250×168
イメージ
1549332981.png
/2KB
違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -