ローカルに保存してあるCSVを読込む
- <!DOCTYPE html>
- <html lang="ja">
- <head>
- <meta charset="UTF-8">
- <title>ローカルに保存してあるCSVを読込む</title>
- <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
- <script type="text/javascript" src="knockout-2.1.0beta.js"></script>
- <script type="text/javascript">
- jQuery.extend({
- csv: function(delim, quote, lined) {
- delim = typeof delim == "string" ? new RegExp( "[" + (delim || "," ) + "]" ) : typeof delim == "undefined" ? "," : delim;
- quote = typeof quote == "string" ? new RegExp("^[" + (quote || '"' ) + "]" ) : typeof quote == "undefined" ? '"' : quote;
- lined = typeof lined == "string" ? new RegExp( "[" + (lined || "\r\n") + "]+") : typeof lined == "undefined" ? "\r\n" : lined;
- function splitline (v) {
- // Split the line using the delimitor
- var arr = v.split(delim), out = [], q;
- for (var i=0, l=arr.length; i<l; i++) {
- if (q = arr[i].match(quote)) {
- for (j=i; j<l; j++) {
- if (arr[j].charAt(arr[j].length-1) == q[0]) {
- break;
- }
- }
- var s = arr.slice(i,j+1).join(delim);
- out.push(s.substr(1,s.length-2));
- i = j;
- }
- else {
- out.push(arr[i]);
- }
- }
- return out;
- }
- return function(text) {
- var lines = text.split(lined);
- for (var i=0, l=lines.length; i<l; i++) {
- lines[i] = splitline(lines[i]);
- }
-
- // 最後の行を削除
- var last = lines.length - 1;
- if (lines[last].length == 1 && lines[last][0] == "") {
- lines.splice(last, 1);
- }
-
- return lines;
- };
- }
- });
- function ViewModel() {
- var self = this;
- self.loadFile = ko.observable();
- self.localFile = function(a, b) {
- var fileList = b.target.files;
-
- var reader = new FileReader();
-
- // ファイル読み込み完了時
- reader.onload = function(){
- var obj = $.csv(",", "", "\n")(reader.result);
- a.loadFile(obj);
- }
-
- // ファイルの読み込み
- reader.readAsText(fileList[0], "utf-8");
- // reader.readAsText(fileList[0]); // 文字コードの指定がなくても大丈夫かも。
- };
- }
- $(document).ready(function () {
- ko.applyBindings(new ViewModel());
- });
- </script>
- <style type="text/css"></style>
- </head>
- <body>
- <h1>ローカルに保存してあるCSVを読込む</h1>
- 適当なJSONファイルがなければ右のファイルを保存して試す「<a href="//tips.recatnap.info/sample/testdata/testdataB.txt">JSONファイルのサンプル</a>」
- <div style="padding:1em 0;">
- <input type="file" data-bind="event: {change: localFile}" />
- </div>
- ▼読込んだファイルを表示
- <div style="padding:0.5em;border:1px solid #ccc; background:#f5f5f5;" data-bind="foreach: loadFile">
- <p data-bind="text: $data[0]"></p>
- </div>
- <div style="font-size:10pt;text-align:right;margin-top:0.5em;">
- <a href="//tips.recatnap.info/" target="_top">PCスキルの小技・忘却防止メモ</a> -
- <a href="//tips.recatnap.info/wiki/" target="_top">PCスキルの小技・忘却防止メモのまとめ(wiki)</a>
- </div>
- <div style="font-size:10pt;text-align:center;margin-top:0.5em;padding:0.5em;border-top:1px solid #ccc;">
- Copyright © 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.
- </div>
- </body>
- </html>