• 締切済み

CSVファイルへの書出し方法

テキスト文章をCSVファイルに書き出したいのですが、書き出したファイルの各行の前後にダブルコーテイション(")が付いてしまいます。 これを取り除いて書き出すことはできないのでしょうか? プログラム例: Text="abc,100,あいうえお" Open File For Append As #1 Write #1, Text Close #1 Print文では、上手くいくのは確認しています。 Write文とPrint文の処理の違いと合わせて、教えてください。

みんなの回答

  • arikui
  • ベストアンサー率43% (52/120)
回答No.2

すみません。補足です。 ご質問のプログラムでは、   Text="abc,100,あいうえお" とするのではなく、   Text1="abc"   num1=100   Text2="あいうえお"   Write #1, Text1, num1, Text2 とすれば、   "abc",100,"あいうえお" と出力されます。

  • arikui
  • ベストアンサー率43% (52/120)
回答No.1

Write文は、文字列の前後をダブルクォーテーションでくくることになっています。 決め事なので、ダブルクォーテーションは無くせません。 また、Write文は、たとえば、   Write #1, 1,2,3 とすると、ファイルに書き出される情報も   1,2,3 のように、カンマで区切られます。 一方のPrint文は、   Print #1, 1,2,3 とすると、   1 2 3 と、カンマは出力されません。 ですから、   Print #1, 1;",";2;",";3 とすると、カンマが出力されます。 また、Print文は、   Print #1, 1,2,3,   Print #1, 4,5,6 とすると、ファイルには   1 2 3 4 5 6 と出力されますが、Write文では、   Write #1, 1,2,3, のようなことは許されず、エラーになります。 CSVの仕様として、文字列の前後をダブルクォーテーションでくくることは許されていますから、Write文を使ったほうがCSVを出力するのは楽だと思います。

関連するQ&A

  • CSVの作り方

    VBの初心者です。 VBでCSVファイルを新規で開いて 保存できたと思ったのですが、できていませんでした。 まだ何か足らないのでしょうか? ーーーーーソースーーーーー '取り合えず開いて保存 open app.path + "ファイル名"for output access write as #1 close #1 ーーーーーソースーーーーー

  • ファイル保存

    Private Sub Command1_Click()   intFileNo = FreeFile   Open "sample_01.csv" For Output As #intFileNo   Print #intFileNo, Text1.Text   Close #intFileNo End Sub このプログラムではテキストボックスに表示されたcsvをファイル名sample_01.csvとして保存できるのですが、 これだとテキストボックスに表示されているのが何でもファイル名がsample_01.csvとなってしまいます>< こうではなくて、テキストボックスに表示されている、『○○○.csv』というのをそのままファイル名として保存したいのです。 sample_01.csvの部分をtext1.textにかえてやったらエラーがでてできませんでした・・・ どなたかご教授お願い致しますm(__)m

  • テキストファイルへの書き出し

    ExcelVBAについて教えてください。 Dim path As String Dim FullPath As String Path ="C:\" Dim FN As String FN ="abc.txt" Dim intFF As Integer intFF = FreeFile FullPath = Path & "\" & FN Open FullPath For Output As #intFF Print #intFF, FullPath Close #intFF とやると、Open FullPathのところで、実行時エラー 76、パスが見つかりませんと表示されてしまいます。 やりたいことは、Excel VBAでテキストファイルを新規につくり、そこへ書き出し、保存したいです。ファイル名はFullPathで指定したファイル名を新規で作り出し、それに対して書き出し、保存をしたいです。 何が間違っているのでこのようなエラーが表示されてしまうのでしょうか?回避方法がありましたらご教授お願いいたします。

  • CSVファイル読み込み

    VC++でCSVファイルの読み込みを作っています。 ファイル名「abc.csv」というファイルがあり CSVファイルの内容は、 "id","food" "1","バナナ" "2","オレンジ" となっています。 ソース上はファイルをオープンして 読み込むところまでは分かりましたが、 CSVファイルのコンマの分解とその後の処理が分かりません。読み込んだ後、コンボボックスで、CSVファイルのname一覧を表示する予定でいます。 例では、バナナ     オレンジ とコンボボックスで表示して選択できるようにします。 今のソースは以下の通りです。 CStdioFile file; CString name; int flag;  if(!file.Open("abc.csv",CFile::modeRead)){ AfxMessageBox("File Open failed"); } while(flag){ if(file.ReadString(name)==FALSE) //nameにデータ読み込み break; //CSVコンマを分解 //テキスファイルで読み込み?表示? } file.Close(); //file close 初心者なので間違いだらけかもしれませんが よろしくお願いしますm(__)m

  • ファイルを開く

    ファイルを開く時にファイルが開かれている時に エラーメッセージを出したいのですが、 Open "D:\test.txt" For Append As #1と記述しても エラーが出てくれません。 エクセルファイルで Open "D:\test.xlsx" For Append As #1だと エラーメッセージが出ます。 テキストファイルはエラーメッセージが出ないのでしょうか?

  • 複数のCSVを1つのファイルにまとめる

    リモートからダウンロードしたCSVファイルをひとつにまとめる処理をしています。 ダウンロードするリストファイルとCSVファイルのダウンロードはできたのですが、最後にダウンロードしてきたCSVファイルをひとつにまとめるところがうまくいきません。 こちらの過去ログから下記記述してみたのですが、うまくいきません。 if(open(OUT,">$path/$year$mon$mday$csv")){      for my $fname (sort @dirs){        if(open(IN,"$path/$fname")){          my @lines = <IN>;          print OUT @lines;          close(IN);        }     }     close(OUT);   } for my $fname (sort @dirs){の記述で、Unrecognized characterといったエラーが出てうまくいきません。 項目の設定に誤りがあるのでしょうか?perl初心者でよくわかりません。 $fnameや@dirsはどのように設定すればいいのでしょうか?

    • ベストアンサー
    • Perl
  • 漢字の入ったCSVファイルを読み込みたい。

    こんにちは。 python初心者の者です。 漢字の入った.csvファイルからその中の要素をリストに加えていくプログラムを作っています。 しかし、文字コードの問題からか、漢字が表示されず、困っています。 .csvファイルはexcelで作成し、.csv形式で保存しています。 以下にコードを載せるので、ご存知の方ご教授ください。 pythonは2.7 excelは2010を使っております。 【ソースコード】 import csv import codecs filename = raw_input('The file is ...') print 'Reading' + filename + '...' read_file = codecs.open(filename, 'r', 'utf-8') reader = csv.reader(read_file) list1 = [] for line in reader: list1.append(line) print list1 【.csvファイルをメモ帳で開いたイメージ】 小泉 片山 森山 田中 塩川 遠山 坂口 青木 富樫 山田

  • CSVデータの同じファイルに上書きするには。

    CSV形式でデータdata.csvが書いてあります。プログラムを実行して、そのファイルの$data[4]の値が5という数字だった場合は、そこのセルだけ"解除"という文字に置き換えて(ほかに入ってる値ははそのまま)data.csvに上書きしたいのですが、どうもうまくいきません。したのように記述したのですが、どこが間違っているのかがわかりません。。どなたか教えてください。よろしくおねがいします。 #!/usr/bin/perl $file='data.csv'; open(FILE, "$file"); while(<FILE>){ @data = split(/,/, $_); } close(FILE); if($data[4] eq "5"){$data[4] = "解除";} open(OUT, ">$file"); print OUT @data; close(OUT);

  • C#でCSVファイルを逐一更新したい

    C#のプログラムで データをCSVファイルに蓄積するプログラムを作っています。 やり方としては最初にCSVファイルを指定し ボタンを押すたびに、データを追加するように作りました。 以下抜粋 //CSVファイル指定 csvfile = new System.IO.StreamWriter(csvPath, true, encording); ・ ・ ・ //データの書き込み csvfile.Write(data); csvfile.Write(","); ・ ・ ・ //CSVファイルクローズ csvfile.Close(); このプログラムを動作させた所 「csvfile.Close();」の時点で、実際にcsvにデータが書き込まれました。 データの書き込みのたびにCSVファイルが更新されるのが理想なのですが、 その方法としては逐一クローズするしか方法はないのでしょうか? 何らかの方法で逐一更新出来たり、 もしくは異なるCSVへの書き込み方法があれば、教えていただけないでしょうか?

  • VBでCSVファイルを読み込む方法(最速方法は?)

    こんにちは。VB6.0(SP5)、Windows2000でVBの勉強をしています。 VBのテキストボックスに入力したデータをCSVファイルに保存する時、もうすでに登録されていたらエラーを出したいと思っています。 そこで、CSVファイルを読み込み、同じかどうか確認したいと思っていますが、どの方法で処理するのが早く効率的なのでしょうか。 ファイル形式・・・csvで50行×3列 ----------- aaa,1,2 bbb,3,4 ・・・50行程度のデータ ----------- テキストボックスに入力したデータ・・・例えば"ccc" 1.Open ファイル名 For Input As #fileNum でEOFまで読み、配列に入れ、その後1列目のデータが"ccc"かどうか確認する 2.Open ファイル名 For Input As #fileNum で読みながら、1列目のデータが"ccc"かどうか確認し、EOFまで繰り返す 3.DAOを利用し、SELECT文であるかないか確認する(DAO2.5) の3つの方法を試してみましたが、あるパソコンで行うとDAOが早いのに別のパソコンだとDAOが1番遅いなど、どれが効率的なのかよくわかりませんでした。 このような処理をしたい場合、みなさんはどのような方法で処理されますか? 上記以外の方法でも構いません。アドバイスよろしくお願いします。

専門家に質問してみよう