- ベストアンサー
csvファイル内の文字数値をWebページに表示
毎日数値が変化したデータをcsvファイル形式で私がPCに取り込んでいます。毎日固定のデータ配列です。 このcsvファイル内にある文字や数値のデータを、 あらかじめ作成してあるWebページの表フォーマットのセル一つ一つに表示させたいです。 Webページ作成にはホームページビルダーを使っています。 どうかやり方がわかるかた教えてください。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
2ファイルを、一度まるっとコピってみてください。 -------------------------------------------- test.html ↓ここから -------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=shift_jis"> <html> <head> <title>ポートフォリオ一覧 株式(現物/一般預り)</title> </head> <script language="JavaScript"> <!-- //***** コード、単価の順で昇順ソートしています *****// function dataSort() { myDatabase.Sort=" +code; +tanka"; myDatabase.reset(); } //***** セレクトボックス内で市場で抽出処理しています *****// function dataFilter() { var fData; var i = testForm.testSelect.options[testForm.testSelect.selectedIndex]; if (i.value == 0) { fData = ""; } if (i.value == 1) { fData = i.text; } if (i.value == 2) { fData = i.text; } myDatabase.Filter = "shijyo= " +fData; myDatabase.reset(); } //***** 別テーブルで合計を計算しています *****// function calc() { if(testTable1.readyState == "complete") { var sum9 = 0; var sum7 = 0; var sum8 = 0; var sum5 = 0; var sum6 = 0; //テーブル1の値を変数sumに格納 var loop = testTable1.rows.length; for(var i = 1 ; i < loop ; i++) { sum9 += parseInt(testTable1.rows[i].cells[9].innerText); sum7 += parseInt(testTable1.rows[i].cells[7].innerText); sum8 += parseInt(testTable1.rows[i].cells[8].innerText); sum5 += parseInt(testTable1.rows[i].cells[5].innerText); sum6 += parseInt(testTable1.rows[i].cells[6].innerText); } //テーブル2の2行目に上記の値を格納 testTable2.rows[1].cells[0].innerText = sum9; testTable2.rows[1].cells[1].innerText = sum7; testTable2.rows[1].cells[2].innerText = sum8; testTable2.rows[1].cells[3].innerText = sum5; testTable2.rows[1].cells[4].innerText = sum6; } } // --> </script> <body onLoad="dataSort()"> <form name="testForm"> <!-- セレクトボックス --> <select name="testSelect" onChange="dataFilter()"> <option value="0" selected>全て <option value="1">東証 <option value="2">大証 </select> </form></p> <!-- testTable1ここから --> <table id="testTable1" width="700" border=1 datasrc="#myDatabase"> <thead> <tr> <td>市場</td> <td>銘柄(コード)</td> <td>参考単価</td><td>数量</td> <td>現在値</td> <td>前日比</td> <td>前日比(%)</td> <td>損益</td> <td>損益(%)</td> <td>評価額<td> </tr> </thead> <tbody> <tr> <td><span datafld = "shijyo"></span></td> <td><span datafld = "code"></span></td> <td><span datafld = "tanka"></span></td> <td><span datafld = "suryo"></span></td> <td><span datafld = "genzaichi"></span></td> <td><span datafld = "zennitihi"></span></td> <td><span datafld = "zennitihiPer"></span></td> <td><span datafld = "soneki"></span></td> <td><span datafld = "sonekiPer"></span></td> <td><span datafld = "hyokagaku"></span></td> </tr> </tbody> </table> <!-- testTable1ここまで --> <SCRIPT LANGUAGE="JavaScript"> <!-- //計算式呼びだし testTable1.onreadystatechange = calc; --> </SCRIPT> <!-- testTable2ここから --> <table id="testTable2" width="700" border=1> <tr> <td width="200" rowspan="4" colspan="2">株式(現物/一般預り)<br>合計</td> <td width="100">評価額</td> <td width="100">含み損益</td> <td width="100">含み損益(%)</td> <td width="100">前日比</td> <td width="100">前日比(%)</td> </tr> <tr> <td width="100">null</td> <td width="100">null</td> <td width="100">null</td> <td width="100">null</td> <td width="100">null</td> </tr> </table> <!-- testTable2ここまで --> <!-- データベース用オブジェクトの指定 --> <object id="myDatabase" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> <param name="DataURL" value="data.csv"> <param name="UseHeader" value="true"> </object> </body> </html> -------------------------------------------- data.csv ↓ここから -------------------------------------------- shijyo,code,tanka:Float,suryo:Float,genzaichi:Float,zennitihi:Float,zennitihiPer:Float,soneki:Float,sonekiPer:Float,hyokagaku:Float "東証","1820 西松建",357,1000,387,+2,+0.52,+30000,+8.40,387000, "東証","6274 新川",1995,100,2165,+45,+2.12,+17000,+8.52,216500, "東証","6934 新神戸電",423,1000,445,+2,+0.45,+22000,+5.20,445000, "大証","2576 近畿コカ",965,1000,1026,+6,+0.59,+61000,+6.32,1026000, "東証","2591 カルピス",742,1000,825,-4,-0.48,+83000,+11.19,825000, "東証","2873 加ト吉",2060,100,2150,-5,-0.23,+9000,+4.37,215000, "東証","6471 日本精工",515,1000,550,-3,-0.54,+35000,+6.80,550000, "東証","6588 東芝テック",488,1000,487,-8,-1.62,-1000,-0.20,487000,
その他の回答 (7)
- kaiu
- ベストアンサー率20% (65/315)
>すみません!できました!! 良かったです。 頑張ってくださいね。
- kaiu
- ベストアンサー率20% (65/315)
型を間違えてました。 メモリーが勿体無いので 計算部分を入れ替えてください。 -------------------------------------------- test.html ↓ここから -------------------------------------------- //***** 別テーブルで合計を計算しています *****// function calc() { if(testTable1.readyState == "complete") { var sum9 = 0; var sum7 = 0; var sum8 = 0.00; var sum5 = 0; var sum6 = 0.00; //テーブル1の値を変数sumに格納 var loop = testTable1.rows.length; for(var i = 1 ; i < loop ; i++) { sum9 += parseInt(testTable1.rows[i].cells[9].innerText); sum7 += parseInt(testTable1.rows[i].cells[7].innerText); sum8 += parseFloat(testTable1.rows[i].cells[8].innerText); sum5 += parseInt(testTable1.rows[i].cells[5].innerText); sum6 += parseFloat(testTable1.rows[i].cells[6].innerText); } sum8 = Math.floor(sum8 * 100 + 0.5) / 100; sum6 = Math.floor(sum6 * 100 + 0.5) / 100; //テーブル2の2行目に上記の値を格納 -------------------------------------------- data.csv ↓ここから(一行目のみ) -------------------------------------------- shijyo,code,tanka:Int,suryo:Int,genzaichi:Int,zennitihi:Int,zennitihiPer:Float,soneki:Int,sonekiPer:Float,hyokagaku:Int
お礼
ご親切な回答をありがとうございました 。 理解できる限界を超えたみたい(^^; 大変参考になります。勉学に励みます♪
- kaiu
- ベストアンサー率20% (65/315)
作ってみましたが、 レイアウト・抽出条件やソート条件等は アレンジして使ってください。 csvに関してですが、 データバインドは基本的に csvのレイアウトを まるっと読み込んでしまいますので、 手間でないならヘッダとフッタは 編集お願いします。 ヘッダは1行目固定で入れ替えてください。 フッタは自動計算にしましたが、 値が合わないみたいです。 どういう計算か分からなかったのですが・・・。 もし面倒ならcsvで「,」空欄を入れるか、 javascriptで計算スクリプトを参考に 空欄表示させてみてください。 お役に立てばありがたいです。 また何かあれば連絡ください。
お礼
ほんとにありがとうございます。 >もし面倒ならcsvで「,」空欄を入れるか 了解です! ぱそこん初心者並の質問でもうしわけないですが、 1.ソースコードをマウスでマークして「コピー」 2.ノートパットか、テキストファイルかに「ペースト」し .html ファイルを作る。 3.同じく .csv ファイルを作る。 4.test.htmlファイルを実行する。 ということで実現できるでしょうか? 実は他のサンプルプログラムも、自分のPCへコピーして実行するとデータの部分が空白になります。 もしかして、コンパイラとかするんでしょうか?
補足
すみません!できました!! データ用のcsvなのに -------------------------------------------- data.csv ↓ここから -------------------------------------------- これもコピってました。(@@) ほんとにありがとうございました。 これをスタートに知識を積んでいきたいと思います。感謝です。
- kaiu
- ベストアンサー率20% (65/315)
かまわないですよ。^^ ただ夜まで待っていただけるとありがたいです。 仕事中ですので
お礼
お忙しいのに申し訳ないです。m(__)m
- kaiu
- ベストアンサー率20% (65/315)
>フォームタグにロード時のアクション(OnClick())に ↓ すみません、間違えました。 フォームタグにロード時のアクション(OnLord())に
お礼
昨夜から造っているのですが、だめみたいでうす。 いくつか行数をあけて空白が表示されてるみたい。 教えていただいたURLのサンプルを実行すると動くのですが、(OnLord())についてもまだ解釈できずです。 あつかましいようですがこのデータの最初の4行くらいを表示するプログラムを教えていただけないでしょうか。 以下 data.csv 内容です。(見やすく改行してあります。) "ポートフォリオ一覧", "一括表示", "株式(現物/一般預り)", "市場","銘柄(コード)","参考単価","数量","現在値","前日比","前日比(%)","損益","損益(%)","評価額", "東証","1820 西松建",357,1000,387,+2,+0.52,+30000,+8.40,387000, "東証","6274 新川",1995,100,2165,+45,+2.12,+17000,+8.52,216500, "東証","6934 新神戸電",423,1000,445,+2,+0.45,+22000,+5.20,445000, "大証","2576 近畿コカ",965,1000,1026,+6,+0.59,+61000,+6.32,1026000, "東証","2591 カルピス",742,1000,825,-4,-0.48,+83000,+11.19,825000, "東証","2873 加ト吉",2060,100,2150,-5,-0.23,+9000,+4.37,215000, "東証","6471 日本精工",515,1000,550,-3,-0.54,+35000,+6.80,550000, "東証","6588 東芝テック",488,1000,487,-8,-1.62,-1000,-0.20,487000, "株式(現物/一般預り)合計", "評価額","含み損益","含み損益(%)","前日比","前日比(%)", 4151500,+256000,+6.57,-1000,-0.02,
- kaiu
- ベストアンサー率20% (65/315)
ビルダーは詳しくないので分からないですが、 データバインド機能は ブラウザは参照ページにあるとおり IE4.0以上です。 NNでは駄目みたいですね。 また、OSには依存しませんよ。 ローカルで適当にコピペして 動作させてみてください。 きっとその簡単さに「オオッ」と 思われますよ。 CSVをそのまま表示させるのでは なければjavascriptかなんかで 抽出条件を書いておいて フォームタグにロード時のアクション(OnClick())に 加えればOKです。 その辺の事も先ほど記載したURLに 載っていると思います。
お礼
特に開発ソフトを購入しなくても わりと手軽に実現できるということですね。 やる気がわいてきました♪ 仕事おわって帰宅したら一度ためしてみます。
- kaiu
- ベストアンサー率20% (65/315)
DHTMLで作成するのは いかがですか。 DHTMLはカンマ区切りのCSVデータを 簡単に読み込む事ができます。 下記URLのテーブル/データバインド編を 参照してみてください。
補足
早速のお答えありがとうございます。 プログラムコードの意味はなんとなく理解できそうなのですが。 実はこれから勉強しなければならないほど無知なのです。 DHTMLというのは、WindowsXP、IE6.0、穂無ページビルダー9の作業環境で 扱えるのでしょうか。
お礼
では失礼いたします~。m(__)m