外部にあるCSVをサイトに読み込んで表示するということは可能でしょうか?
またCSVを行単位で読み込み、その値によって背景色を自動で変えるということは可能でしょうか?
JavaScript初心者です。どうかご指導宜しくお願いいたします。m<_ _>m
CSV例
------------------------
1行目 +10
2行目 -15
3行目 +5
4行目 0
表示例
-------------------------
http://farm4.static.flickr.com/3266/3116370342_2 …
値(+): 背景(青)
値(-): 背景(赤)
値(0): 背景(黒)
No.1
- 回答日時:
Web サーバ上で行いたいのでしょうか?
それは難しいと思います。(普通はサーバサイドの言語を使います。)
クライアント限定なら
http://q.hatena.ne.jp/1169003191
あたりが参考になりそうです。
No.2
- 回答日時:
JavaScriptは外部のファイルを読んだり書いたりする事は出来ない仕様に
なっています。よって、CSV形式のテキストファイルを直接読み込んで処理するのは不可能です。
一番簡単な解決方法は、これです。
CSV形式にこだわらず、データをJAVASCRIPTで記述した下記の様な外部テキストファイルとして、<SCRIPT>タグで読み込む
(外部data.jsファイル)
data = [10,-15,5,0];
<script src="data.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
for(i=0;i<data.length;i++){
alert (data[i]);
/* 背景色を変える処理 */
}
// -->
</script>
他にも、JSONPとかAJAXを使うとか、あるいはサーバーサイドのプログラム
を作るとか、目的によって様々な外部ファイル取得の方法があります。
yyr446さんご回答ありがとうございます。
jsファイルだと相性がいいんですね!基本に戻るということですね!!
CSVにこだわってはいないんですが、データベースをエクセルで作成しますので、できればエクセルから直接出力できる形式からだと理想的なんですが・・・それでもCSVとたいして変りはないですかね・・・・
No.3
- 回答日時:
基本的には不可能です。
IE、windows環境限定でよければJScript使って
データバインドとか
http://www.makoto3.net/document/databind/databin …
ActiveXObjectでFileSystemObjectを利用するとか
http://msdn.microsoft.com/ja-jp/library/cc427968 …
の方法が、あることはあります。
もっとも、こんなことできるから脆弱なんでしょうけど…
その他の方法については、他の方の回答の通りです。
fujillinさん。いつもお世話になっておりますm<_ _>m
少なくともかなり難しい領域の事なんだということが分かってきました。
ある意味、IEの軟弱性をつくといったような、かなりディープなレベルな領域なんですね。
No.4
- 回答日時:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<script type="text/javascript" src="prototype.js"></script>
<style type="text/css">
.ctype0 { background-color:#fdd; }
.ctype1{ background-color:#ddd; }
.ctype2{ background-color:#ddf; }
</style>
<body>
<div id="tb"></tb>
<script type="text/javascript">
var html ='<table border="1">', buf, data, fd=[],css;
if( buf = getFileCSV( 'test.csv' ) ) {
data = buf.split("\n");
for( var i=0, m=data.length; i<m; i++){
fd = data[i].split("\t");
css = fd[0]<0? 'ctype0':(fd[0]>0?'ctype2':'ctype1');
html+='<tr class="'+css+'">';
for( var j=0,n=fd.length; j<n; j++) html+='<td>'+fd[j]+'</td>';
html+='</tr>';
}
html+='</table>';
document.getElementById('tb').innerHTML = html;
}
function getFileCSV( fileName ){
var ret = '';
new Ajax.Request( fileName + '?d='+(new Date).getTime(), { method:"get", asynchronous : false, onSuccess:function(o){ret=o.responseText;}});
return ret;
}
</script>
No.5
- 回答日時:
訂正。
<div id="tb"></tb>
を
<div id="tb"></div>
に。
prototype.jsでAjaxを使用。CSVファイルはtab区切り
"'とかは未処理。レコードの第一項目を判定基準に
CSSを決定。ハードルは高い?がんばって!
pipiさん 記述の方、大変ありがとうございますm<_ _>m
質問してはじめてわかったのですが、ただでさえ難しいレベルの事であり、ドベの初心者の私には雲を掴むぐらいのことだというのがわかりました。
テストしてみたいのですが、私のレベルではまずprototype.jsの書き方がわからなくて(汗)
Ajaxという単語は聞いたことがあるというぐらいで、内容は未知との遭遇といった感じです。
こんな私の為に、わざわざ記述までしていただけた事に感謝いたします。
No.6
- 回答日時:
pipiさん 本当にありがとうございますm<_ _>m
試してみたところ、出てきました!!
全く諦めかけていたところだったので、なおさら感動しました(泣)
IEでもFirefoxでもChromeでも表示されました!
これからCSSをいじってみます。
ちなみに、CSVの指定行を読み込むということは可能でしょうか?
No.7
- 回答日時:
うんだべぇ~ えがったべぇ~!^^;
csvの指定行ですが、一度で全行読み込むことしかできないかも?
すでにdata[x]で指定行のレコードの読み出しができます。
data[x]が指定行だったんですね!ありがとうございます^^
これで、やりたい事の基本的な動作は得られたと思います。
あとはCSSの設定をして、サイトへの埋め込みという段階になるのかと思います。
何時間かCSSの設定を書き足して背景の大きさを変えようとしているのですが
どうしてもフォントの大きさに比例した程度にしかできません。
背景の横幅、縦幅、センター出しなどは、どのように書けば適切なのでしょうか
度々ながら、ご教授の程よろしくお願いいたします。m<_ _>m
No.8
- 回答日時:
cssの設定は<tr>に対して設定しています。
希望のものを実現するには、<td>に対して行うように変更しなければなりません。
もしくは、<colgroup>を<table>の後につけるようにするか・・
微妙だな~。
レコードの項目はどうなってるの?1つだけ?
それとも、1個目は、左寄せ。2個目は右寄せとか?
個別にするの?
ちと面倒だなぁ~まぁいずれ日があけてからね
一行の値を背景中央、ボーダー無しで表示し1ユニットとして考えられれば一番かと思っています。
サイト上では、列、行に複数並べますが、もしHTML上でユニットとしてレイアウトできるようであれば自由度は高いのかとも・・・不可能でしょうか?
>cssの設定は<tr>に対して設定しています。
>希望のものを実現するには、<td>に対して行うように変更しなければなりません。
全体的に変えないといけないのですね。重ねてお手数をかけることになってしまいます
私はど素人ゆえに、ちょっとした変更でも、勝手が大幅に変わってくるといった要領が見えないでおります。
ご教授を頂きながら、即座に察せられない不器用さ、誠に恐縮しております。m<_ _>m
No.9
- 回答日時:
>一行の値を背景中央、ボーダー無しで表示し1ユニットとして考えられれば一番かと思っています。
サイト上では、列、行に複数並べますが、もしHTML上でユニットとしてレイアウトできるようであれば自由度は高いのかとも意味がわかりません。
ユニットって何?
まだHTMLで書いてくれたほうが、もしくは理想を画像に
してくれたほうが理解しやすい。
CSVのデータを表にするのではないの?
pipiさん 仕事で出ており返答遅くなって申し訳ありません。m<_ _>m
表示の仕方はページによって異なり、何タイプかあるのです。
http://farm4.static.flickr.com/3128/3119619839_f …
http://farm4.static.flickr.com/3124/3120447738_e …
http://farm4.static.flickr.com/3127/3120447750_a …
個別にてCSVの任意行を指定して表示できれば、HTML上でレイアウトし表にできるのかと考えた次第です。
http://farm4.static.flickr.com/3223/3120447730_8 …
No.10
- 回答日時:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<script type="text/javascript" src="prototype.js"></script>
<style type="text/css">
.ctype0 { background-color:#e8e; width:100px; height:32px; font-size:24px; color:black; text-align:right; }
.ctype1 { background-color:#bbb; width:100px; height:32px; font-size:24px; color:black; text-align:right; }
.ctype2 { background-color:#8cc; width:100px; height:32px; font-size:24px; color:black; text-align:right; }
</style>
<body>
<h4>どうであれタグにIDをふり、それに代入する</h4>
例えば<span id="csv0"></span>とか<span id="csv1"></span>にして後から代入する
<hr>
<table>
<tr><td id="csv2"></td><td>こんなのとか</td></tr>
<tr><td id="csv3"></td><td>こんなのとか</td></tr>
</table>
<hr>
<table>
<tr><td id="csv4"></td><td id="csv5"><td id="csv6"><td id="csv7"><td id="csv8"><td id="csv9"></tr>
<tr><td id="csv10"></td><td id="csv11"><td id="csv12"><td id="csv13"><td id="csv14"><td id="csv15"></tr>
</table>
<p>
なんとなく、ずるいような感じだけど・・・。
</p>
<script type="text/javascript">
if( buf = getFileCSV( 'test.csv' ) ) {
data = buf.split("\n");
for( var i=0, m=data.length; i<m; i++){
var e=document.getElementById('csv'+i);
if(e) {
with( e ){
innerHTML = ((data[i]>0)?'+':'')+data[i];
className = data[i]<0? 'ctype0':(data[i]>0?'ctype2':'ctype1');
}
}
}
}
function getFileCSV( fileName ){
var ret = '';
new Ajax.Request( fileName + '?d='+(new Date).getTime(), { method:"get", asynchronous : false, onSuccess:function(o){ret=o.responseText;}});
return ret;
}
</script>
思っていることを、伝えることは難しいものです。
できる限り推測して理解してあげようと回答者の方々は考えていると
思いますが、「度が過ぎる」と思うラインが私には存在します。
もともと、完成版に近いような、コードを書くこと(丸投げ)を
嫌う人が多くいます。でも、自分が勉強する過程で参考になったのは
コピペしてまさに動くコードでした。なのでできるだけ動くものを
書きたいと思っています。そして「(最初は)解説はしない」です。
>何時間かCSSの設定を書き足して背景の大きさを変えようとしているのですがどうしてもフォントの大きさに比例した程度にしかできません。
というのがありました。そこまでやれるのなら、その過程でやっている
ことを見せてくださいね! そこから私が学ぶこともあったりします。
自分なりに質問に答え、勉強している身なので間違いがあると思います。
鵜呑みにはしないようにしてください。
この回答への補足
私なりに別の方法も探してみました。PHPを使うやり方です。
CSVの読み込みまでは以下でいけるのですが、値によって背景色を変えるというところがわかりません。PHPでそこまで出来るのかわかりませんが、何か良い方法があればご指導お願いいたします。m<_ _>m
<html>
<head>
<?php
$openfile = file_get_contents('test.csv');//CSVの読み込み
$csv_gyo = split("\n", $openfile);
?>
</head>
<body>
<td width="100" height="30" valign="middle">
<?php
echo "<TABLE>";
echo "<TR><TD>".$csv_gyo[0]."</TD</TR>";//1行目の表示
echo "</TABLE>";
?>
</td>
</body>
</html>
内容から、取り組み方に至るまでのご指導、大変にありがとうございます。
私自身あまりにも恥ずかしい試行錯誤のレベルなので、自分のやっている過程を上げると愛想をつかされてしまう部分もあるのではないかと心配していました。
早速実行しようと試みていますが
>どうであれタグにIDをふり、それに代入する
の理解につまずいています。
CSVのデータにIDをふるものかと解釈し
値の前にIDなる物をふってみました。
例えば1
-----------
id=1 -5
id=2 10
id=3 -3
例えば2
---------------
1 -5
2 10
3 -3
例えば2
---------------
1,-5
2,10
3,-3
結果、IDのつもりが値としてそのまま読み込まれて終わりました。
全くとんちんかんな勘違いをしていると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
- Windows 95・98 タスクバーの背景の色だけを変えたい。 2 2022/07/13 14:44
- Excel(エクセル) こんなことできますか?例えば、sheetに貼り付けた図形のタイトルを、セルA1の文字で表示する。 5 2022/04/22 15:25
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- その他(ブラウザ) zoomのバーチャル背景が選べない 4 2022/12/08 12:38
- その他(Microsoft Office) エクセル 表の移動 2 2023/04/05 20:29
- Windows 10 zoomで自分の顔の背景 3 2023/06/07 22:34
- その他(Microsoft Office) マクロについて教えてください、、 5 2023/06/06 22:07
- 一眼レフカメラ カメラ初心者です。 SONYのフルサイズカメラを購入し、レンズはTAMRONの20-40 F2.8の 5 2023/03/26 22:22
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<JavaScript>tableタグを入力不...
-
画面表示とともに、テーブルの...
-
テキストエリアに入力した改行...
-
テーブルの行数を可変長にした...
-
外部のデータファイルの読み込...
-
<iframe>内にHTMLをランダム表...
-
selectのonChangeが動作しません
-
return trueとreturn falseの用...
-
テキストボックス入力を半角英...
-
onClick="this.form.submit
-
onchangeイベントを強制的に発...
-
追加ボタンを押した際に ok ボ...
-
正規表現で複数マッチ条件で悩...
-
テキストエリアをenterキーでフ...
-
HTMLとJavaScriptで作った表示...
-
Jvasvriptのlengthで個数が取得...
-
全てのselect要素をデフォルト...
-
テキストボックスの値同士を比...
-
フォーム内で記入したクエリ送...
-
value内に変数を入れたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<JavaScript>tableタグを入力不...
-
selectのonChangeが動作しません
-
画面表示とともに、テーブルの...
-
テーブルの行数を可変長にした...
-
javascriptで画像をテーブルに...
-
テキストエリアに入力した改行...
-
プルダウンメニューを表の中に...
-
【jQuery】tableループ内のIDの...
-
javascriptで<table>背景色の取得
-
csvファイルのデータを変数とし...
-
javascriptでクリックするごと...
-
Javascriptでテーブルタグの座...
-
table内で上下するfloating men...
-
tbody要素のinnerHTMLが書き換...
-
テーブルのセルのクリック時、...
-
外部CSVをサイトに読み込み表示...
-
Table内TDの子要素を移動させた...
-
指定のテキストをクリックする...
-
javascript でテーブル操作
-
クリックごとに文字色が交互に...
おすすめ情報