• ベストアンサー

2次元配列のデータをファイルへ保存

教えて下さい。 a(100,200)の2次元配列のデータをファイルに保存したいのですが、 a(0,0),a(0,1),a(0,2).......a(0,200) a(1,0)....... a(2,0)... . . . a(100,0)...................a(100,200) といった感じでカンマ区切りでCSV形式で保存したいのですが、これを簡単にファイルに保存する方法を 教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.4

; をつけないと改行されてしまうようです。 for i=0 to 100 for k=0 to 199 write #1,a(i,k); next k write #1,a(i,200) next i これでどうでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.6

Writeは必ず改行が入るので、Printを使ってください。 for i=0 to 100 for k=0 to 200 Print #1, a(i,k); If k = 200 Then Print #1, "" Else Print #1, ","; End if next k next i

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#2のものです。#1の補足の >するとデータがすべて縦に並んでしまいました 私のも縦に並びます。メモ帳などで見ると縦に 配列1つずつ並んで見えると言うことでしょうが これは「縦に並ぶ」とは言いません。復帰改行コード (vbCrLf)がWrite#ステートメント発行時毎に入ると言うことです。 (完成ごエクセルの表のセルに読みこませたいとは、書いてないですね。) それでそうしたいのであれば、仮にsと言うStringを定義し For k=1 to 200 s="" For i=1 to 100 s=s & a(k,i) & "," next i s=s & vbCrLf Print #1,s next k のように100まで溜め込み、復帰改行と共に書き出せばよい。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

Open "test.csv" For Output As #1 for i=0 to 100 for j=0 to 199 write #1,a(i,j), next j write #1,a(i,200) next i close #1 end

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

大事なことで、処理のスタートは、どこなんでしょうか。 と言うのは、(1)プログラムの途中で、配列a(x,y)の dim a(100)にデータが出来ていて、それをテキスト ファイルに落としたいのか(2)紙の上にデータがあって いまから(多分キーボードインプットで)入力して、読みこんだ時にa(x,y)の形に出きる、テキストファイルを作るのかです。 #1のお答えは(1)を前提にしているようです。 (2)で有れば、配列名aは当然入力不要で、x,yはペア で入れることになるでしょう。また配列要素x、yはデータの中に持たなくても良いでしょうね。 x1,y1,x2,y2,x3・・・でも良いし、x1;y1,x2;y2,x3;・ でも良い。後者はセパレータは,,/,;,-など、どれか決めて おけば良いと思う。入力手数は前者後者とも同じですが、 読み込んだ時、前者はx$,Y$で受けられる。後者はセパレータで分割せねばならない。しかし1データ飛ばして全体がずれる恐れは少ない。後者の例。テスト済み。 Sub test01() Dim a As String Open "c:\My Documents\aa2.txt" For Output As #1 For i = 1 To 1000 a = InputBox("(x,y)=") If a = "end" Then GoTo ed Write #1, a Next i ed: Close #1 End Sub 復帰改行(レコード区切り)を要素1個1個に入れるかも 配列要素数がもっと多ければ、考える余地があろう。

TeamMSY
質問者

補足

ありがとうございます ちなみに処理のスタートは(1)です。

全文を見る
すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

ファイルをオープンしてある状態で、出力するところだけです。 for i=0 to 100 for k=0 to 199 write #1,a(i,k) & "," next k write #1,a(i,200) next i 上記のように二重ループにすればいいかと思います。 ファイルに出力する部分は、ちょっと違うかもしれませんが・・・。 ま、参考程度に。

TeamMSY
質問者

補足

ありがとうございます。 実際に試してみました。 するとデータがすべて縦に並んでしまいました。 私の説明が悪かったとは思いますがやりたいことは、 この回答を例に取ると、 for k=0 to 200 のデータを横一列にならべて、 for i=0 to 100 のデータを縦一列にならべて、 100*200のセルに当てはめるやり方が知りたいのです。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 二次元配列について

    C#を使っています。 エクセルのデータを、カンマ区切り(CSV)にして保存しました。 そのデータをそのまま二次元配列に代入していきたいのですが、うまくできません(><) データの一行目しか代入しなかったりします。。二行目にうつってくれません。まだまだ初心者なのですが、どうか教えてください(><)

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?

  • csvファイルを上書き保存でカンマ区切りされない

    csvファイルのセルに文字を入力して、「上書き保存」をすると ”XXXXX には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか? ” というメッセージが出たので「はい」をクリックして上書き保存しました。 再度そのファイルを開いてみると、カンマ区切りされておらず、各セル内の文字が結合されていました。 そこで質問なのですが、 試しに上記の上書き保存をせず、右上の「ウィンドウを閉じるボタン(×ボタン)」をクリックして、 「保存しますか?」との問いに「はい」と答え、 次に”XXXXX には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか? ” との問いに「はい」と答えた形で保存をすると、きちんとカンマ区切りされていました。 なぜ上記の方法では正常にカンマ区切りされなかったのでしょうか? どうぞよろしくお願いいたします。

  • CSV形式ファイルは編集データは保存されない?

    ダウンロードしたCSVファイルを編集し、初めて保存するときに以下のようなメッセージが出ます、 「(ファイル名)には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか? ・このまま保存するには、[はい]をクリックします。 ・機能を保存するには、[いいえ]をクリックしてから、最新のExcelファイル形式で保存します。 ・失われる可能性がある内容については、[ヘルプ]をクリックしてください。」 「はい」を選択するとCSV形式で保存されるようですが、編集したデータではなく編集前のデータのままで保存されています。 なので「いいえ」を選択すると今度は編集されたデータでExcel形式で保存されます。 つまりCSV形式で編集したものは元データのまま、かつ、同形式でしか保存されないということなのでしょうか?編集したデータを保ちたい場合にはExcel形式でしか保存するしかないのでしょうか?

  • 2次元配列から1次元配列へのデータ読み込み方法をお尋ねします。

    いつもお世話になります。 readtest.csvというCSVファイルを作り、データを次のように入れています。 a,apple,301,23 b,orange,518,47 c,grape,278,19 d,banana,189,36 この3列目のデータを取り出して1次元配列に入れるため、DBtest.phpを次のように書きました。 01: <?php 02: $Data=file("../readtest.txt"); 03: for ( $i = 0; $i < sizeof( $Data ); $i++ ) { 04: $line=explode(",",$Data[$i]); 05: echo $line[2]; // 301518278189 06: // $xdata=implode(",", $line[2]); 07: } 08: ?> この実行結果は、「301518278189」となります。なぜコンマが入らないのでしょうか? 5行目をコメントアウトして6行目を生かして実行すると、 Warning: implode() [function.implode]: Bad arguments. in C:\Program Files\Apache Group\Apache2\htdocs\DBtest.php on line 6 となります。 3列目のデータを抜き出して配列を作るにはどのようにすれば良いでしょうか? よろしくご教示頂ければ幸いです。

    • ベストアンサー
    • PHP
  • csvファイルを2次元配列に格納

    Javaの勉強をしています。 csvファイルを読み込んで2次元配列に格納する方法を教えて下さい。 1次元の配列なら下記のようにして出来たのですが、2次元の配列に格納する方法が分かりません。 ------------------------------ try { File csv = new File("xxx.csv"); BufferedReader brf = new BufferedReader(new FileReader(csv)); while(brf.ready()) { String line = brf.readLine(); String[] data = line.split(","); for(int j=0; j<data.length; j++) { System.out.print(data[j] + "\t"); } System.out.println(); } brf.close(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } --------------------------- 一度はできないのかと思い、上記の1次元配列のdata[j]を2次元配列のarray[i][j]に代入してみたのですが出来ませんでした。 回答宜しくお願い致します。

    • ベストアンサー
    • Java
  • データを配列に取り込む

    はじめまして。よろしくお願いいたします。 開発環境 VB6.0 OS:WIN2000 VBを始めたばかりのもので何もわかっていません。 勉強していきたいので皆様ご回答よろしくお願いします。 計測器からデータを配列に取り込むんですが、 配列が4種類あり、その配列をバイナリデータファイル1つにしたいのですが。そんなことできますか? 配列1 WegetScaleData75211モータ回転数     WegetScaleData75211ポンプ流量  配列2 WegetScaleData72351振動     WegetScaleData72351騒音 配列3 WegetScaleData72411トルク 配列4 WegetScaleData72451油温 *配列1,2=2次元配列 *配列3.4=1次元配列 このバイナリデータファイルには1秒に1回計測データ(6種類)が10000個入ってくる。(最長連続運転72時間) バイナリファイルの中にはこんな感じで書き込んでいきたい・・・  時間 モータ回転数 流量 振動 騒音 トルク 油温 1**** 500    0.253  0.222 120 150 32 2**** 500    0.253  0.222 120 150 32 3**** 500     0.253  0.222 120 150 32 4**** 500     0.253  0.222 120 150 32 5**** 500    0.253  0.222 120 150 32 6**** 500    0.253  0.222 120 150 32 7**** 500     0.253  0.222 120 150 32 8**** 500    0.253  0.222 120 150 32 9**** 500     0.253  0.222 120 150 32 10**** 500    0.253  0.222 120 150 32 ・・・ 10000**** 500    0.253  0.222 120 150 32 20000**** 500     0.253  0.222 120 150 32 30000**** 500    0.253  0.222 120 150 32 99999**** 500    0.253  0.222 120 150 32 99999999**** 500    0.253  0.222 120 150 32 ∞     **** 500     0.253  0.222  120 150 32 計測が終わったら、このデータをCSVへ流し書き込む。 以上が流れです。 1:配列にデータを取り込み、バイナリデータとして保存する方法。 2:バイナリデータをCSVへ上記のような表で書き込む方法。 を教えてください。ソースも何もどうしたらいいかわかりません。 何かサンプルでも頂けたら幸いです。 よろしくお願いいたします。

  • 【エクセル】CSV形式で保存し、そのファイルを開けるとセル値「15-10」が「10月15日」となって保存されている。

    いつもお世話になってます。 宛名ソフトを使おうと住所録のシートをCSV(カンマ区切り)形式で保存し、再度そのCSVファイルを開いたところ、番地が入った例えば半角「15-10」というセル値が「10月15日」と表示されてしまいます。 これを解消する方法を教えてください。 よろしくお願いします。 CSV形式で保存し、そのファイルを開けるとセル値「15-10」が「10月15日」となって保存されている。

  • エクセルをCSV形式で保存したらファイルが開かないのですが・・・

    いつもお世話様になっております。 どうぞよろしくお願い致します。 エクセルファイルをCSV形式で保存しようとすると 「CSV(カンマ区切り)と互換性のない機能が含まれている可能性があります・・・」というダイアログが出ます。 それに対し、はいで答えてファイルを閉じた後、できあがったCSVファイルを開こうとすると 「SYLK:ファイル形式が正しくありません」というメッセージが出てしまって 開けないのですが、どのような理由が考えられますでしょうか?

  • ExcelでのCSVファイルの編集について、

    ExcelでのCSVファイルの編集について、 オートフィルタ機能を使いたいため、 ExcelでCSVファイルの編集しようとしているのですが、ちょっと苦戦しています。。。 私が試してみたこと 1.もとのCSVファイルの拡張子を○○.csv → ○○.txtに変更。   ↓ 2.Excelの「開く」からその○○.txtを読み込む。   ↓ 3.テキストファイルウィザードに従い、   1「カンマやタブなどの区切り文字によって~ 」にチェック   2「区切り文字」→ カンマ、「文字列の引用符」 → "   3「列のデータ形式」 → 文字列 ※090などの数字を、90と先頭の0を消されないように 上記のような手順でCSVファイルを取り込み、編集を終え、 保存する時は   「○○.txtにはテキスト(タブ区切り)と互換性のない機能が含まれている可能性があります。    この形式でブックを保存しますか?」 → このまま保存するため「はい」を選択 これでバッチリOK!…かと思われたのですが、 元の編集前の○○.txt は"名前","ヨミ","電話番号1", …… ""とカンマ区切りであったのが、 編集後の○○.txtは名前 ヨミ 電話番号1  …… タブ区切り(?) となってしまっています。 (CSVファイルとしてはタブ区切りでも問題ないのでしょうが…) どうすれば元のカンマ区切りの形式のまま保存できますでしょうか。 アドバイスよろしくお願い致します。