C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

CSV 末尾に行を追加・ほかの行を参照して計算

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■89486 / inTopicNo.1)  CSV 末尾に行を追加・ほかの行を参照して計算
  
□投稿者/ あかかきき (1回)-(2018/11/30(Fri) 17:01:43)

分類:[C#] 

visual studio 2017
C# console app

CSV形式でたとえば
{A列,B列,C列,D列,E列}
{1,2,6,4,9}
{6,4,8,1,0}
{1,3,7,3,9}
(数の並びは任意で特に意味はない)

とあったとして、末尾にF列、G列を追加し、それぞれ、C列とE列の値の半分をいれたい

という場合どうすればよろしいでしょうか?


簡単に言うと
〇CSVの末尾に列を追加したい。

〇1行目の中身はF列、G列でそれ以降はほかの列を参照し、計算して入れたい。
(これはfor文回して、できたりしないでしょうか?)


どうかよろしくお願いいたします。
引用返信 編集キー/
■89505 / inTopicNo.2)  Re[1]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ 魔界の仮面弁士 (1964回)-(2018/11/30(Fri) 20:40:52)
No89486 (あかかきき さん) に返信
> 末尾にF列、G列を追加し、それぞれ、C列とE列の値の半分をいれたい


if (IntPtr.Size == 4)
{
    string folder = @"C:\TEST\";
    string srcFile = @"EXAMPLE.CSV";
    string dstFile = @"RESULT.CSV";

    string cs1 = @"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" + folder;

    string cs2 = $@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={folder};"
                + @"Extended Properties=""Text;IMEX=1;HDR=YES;FMT=Delmited"";";

    using (var con = new OdbcConnection(cs1))
  //using (var con = new OleDbConnection(cs2))
    using (var cmd = con.CreateCommand())
    {
        cmd.CommandText =
             $@"SELECT A,B,C,D,E, (C/2) AS [F], (E/2) AS [G]
             INTO `{dstFile}`
             FROM `{srcFile}` ";

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
}

引用返信 編集キー/
■89541 / inTopicNo.3)  Re[2]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ あかかきき (2回)-(2018/12/03(Mon) 11:29:44)
No89505 (魔界の仮面弁士 さん) に返信
OdbcConnectionがない、と表示されるのですが、どうすればよろしいでしょうか?
引用返信 編集キー/
■89542 / inTopicNo.4)  Re[3]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ 魔界の仮面弁士 (1968回)-(2018/12/03(Mon) 11:54:39)
No89541 (あかかきき さん) に返信
> OdbcConnectionがない、と表示されるのですが、どうすればよろしいでしょうか?

OdbcConnection クラスを使うために、System.Data.Odbc 名前空間を指定してください。
OleDbConnection クラスを使う場合は、System.Data.OleDb 名前空間です。


もしも、名前空間の指定方法が分からないようであれば、
コード中の波線の付いているエラー行をクリックすることで、
補正候補を表す電球アイコンが表示されますので、
最初の提案候補を選択すれば、コンパイルが通るようになるでしょう。


電球アイコンが表示されない場合には、該当行の上で
「Ctrl+.」もしくは「Alt+Shift+F10」を押してみてください。


修正してみても、実行時にエラーになるような場合は、
対応する ISAM ドライバーがインストールされているか確認してみてください。
(対象 OS のバージョンと bit 数が分からないため、具体的な確認手順は省略します)
引用返信 編集キー/
■89543 / inTopicNo.5)  Re[1]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ カルロスドーン (1回)-(2018/12/03(Mon) 12:42:08)
No89486 (あかかきき さん) に返信

ループでできますよ
https://paiza.io/projects/FifGU6b_YfdaHTJeFNK7lw?language=csharp
引用返信 編集キー/
■89545 / inTopicNo.6)  Re[2]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ あかかきき (3回)-(2018/12/03(Mon) 15:32:53)
No89543 (カルロスドーン さん) に返信
> ■No89486 (あかかきき さん) に返信
>
> ループでできますよ
> https://paiza.io/projects/FifGU6b_YfdaHTJeFNK7lw?language=csharp

計算時にInput string was not in a correct formatとエラーを吐くので
中を覗いてみたら、

record[〜]のなかは \"6\"  が入っているようでうまくint型に変更できていないようです。

どうすればよいか、わからないでしょうか?
引用返信 編集キー/
■89546 / inTopicNo.7)  Re[4]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ あかかきき (4回)-(2018/12/03(Mon) 15:35:59)
No89542 (魔界の仮面弁士 さん) に返信
> ■No89541 (あかかきき さん) に返信
>>OdbcConnectionがない、と表示されるのですが、どうすればよろしいでしょうか?
>
> OdbcConnection クラスを使うために、System.Data.Odbc 名前空間を指定してください。
> OleDbConnection クラスを使う場合は、System.Data.OleDb 名前空間です。
>


using 使って参照していたのですが、コンパイルエラーが起きていたので
電球より、修正提案に従いなおしたところ、CommandTextが定義に含まれていない

と言われてしまいました。
引用返信 編集キー/
■89547 / inTopicNo.8)  Re[3]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ あかかきき (5回)-(2018/12/03(Mon) 16:16:08)
No89545 (あかかきき さん) に返信
> ■No89543 (カルロスドーン さん) に返信

中身を抜き出して格納できました。


これ、ファイルとして出力するにはどうすればよいでしょうか?
引用返信 編集キー/
■89548 / inTopicNo.9)  Re[4]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ カルロスドーン (2回)-(2018/12/03(Mon) 16:27:16)
> これ、ファイルとして出力するにはどうすればよいでしょうか?

プログラムをファイルとして出力ということでしたら
テキストエディタに貼り付けて保存していただければ

CSVをファイルとして出力ということでしたら
Output.csvをお好きなパスに変更していただければ
引用返信 編集キー/
■89549 / inTopicNo.10)  Re[5]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ あかかきき (6回)-(2018/12/03(Mon) 16:52:56)
No89548 (カルロスドーン さん) に返信
>>これ、ファイルとして出力するにはどうすればよいでしょうか?
>
> プログラムをファイルとして出力ということでしたら
> テキストエディタに貼り付けて保存していただければ
>
> CSVをファイルとして出力ということでしたら
> Output.csvをお好きなパスに変更していただければ

出力したところ数字以外のところは全部文字化けしておりました。
dataに入れる際に数値かどうか判別させてやる必要がありますかね
引用返信 編集キー/
■89550 / inTopicNo.11)  Re[6]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ ジェイソン (1回)-(2018/12/03(Mon) 17:54:56)
No89549 (あかかきき さん) に返信

> 出力したところ数字以外のところは全部文字化けしておりました。
> dataに入れる際に数値かどうか判別させてやる必要がありますかね

文字化けしてるならStreamReader,StreamWriterで文字コードを
指定すればいいです

数値を判別しても文字化けには対応できないような
引用返信 編集キー/
■89553 / inTopicNo.12)  Re[7]: CSV 末尾に行を追加・ほかの行を参照して計算
□投稿者/ あかかきき (7回)-(2018/12/04(Tue) 09:40:57)
No89550 (ジェイソン さん) に返信
> ■No89549 (あかかきき さん) に返信
>
>>出力したところ数字以外のところは全部文字化けしておりました。
>>dataに入れる際に数値かどうか判別させてやる必要がありますかね
>
> 文字化けしてるならStreamReader,StreamWriterで文字コードを
> 指定すればいいです
>
> 数値を判別しても文字化けには対応できないような

shift-jis 指定したらできました。

皆様ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ