用于解析csv excel文件的javascript

时间:2012-04-07 22:03:21

标签: javascript html html5 mobile csv

我正在尝试解析我在Excel中制作的CSV文件。我想用它来更新我的谷歌地图。这张Google地图位于我使用Eclipse for Android开发的移动应用中。

老实说,我不确定如何编写JavaScript。任何帮助将不胜感激。我很乐意相信你的工作。

我只想在用户点击执行以下操作的按钮时运行一些JavaScript:

  1. 找到用户当前位置(我已完成此部分!)
  2. 通过解析.CSV
  3. 找到在.CSV excel文件中输入的附近位置
  4. 在每个位置的通知气泡中显示一个小链接,其中显示"导航"当用户点击它时,打开谷歌地图应用程序并开始从用户当前位置(地理位置)导航用户到该位置。
  5. 这是我完成此应用程序所需的唯一部分。所以,再一次,任何帮助都将非常感激。谢谢大家!

3 个答案:

答案 0 :(得分:1)

老实说,我遇到了这个问题。 CSV格式不是为了便于解析而构建的,即使使用复杂的RegEx也难以解析。

老实说,最好的办法是将其导入FormSite或PHPMyAdmin,然后使用比“,”更容易解析的自定义分隔符重新导出文档。我经常使用“%%”作为字段分隔符,一切都像魅力一样。

答案 1 :(得分:1)

不知道这是否会有所帮助,但如果有帮助,请参阅http://www.randomactsofsentience.com/2012/04/csv-handling-in-javascript.html ...

其他: 除了上面链接的解决方案(我的偏好)之外,我还使用了一堆堆积的正则表达式来标记CSV,但是修改自定义错误状态并不容易......

看起来很重但仍然只需要几毫秒:

function csvSplit(csv){
  csv = csv.replace(/\r\n/g,'\n')
  var rows = csv.split("\n");
  for (var i=0; i<rows.length; i++){
    var row = rows[i];
    rows[i] = new Array();
    row = row.replace(/&/g, "&amp;");
    row = row.replace(/\\\\/g, "&#92;");
    row = row.replace(/\\"/g, "&quot;");
    row = row.replace(/\\'/g, "&#39;");
    row = row.replace(/\\,/g, "&#44;");
    row = row.replace(/@/g, "&#64;");
    row = row.replace(/\?/g, "&#63;");
    row = row.replace(/"([^"]*)"/g, "@$1\?");
    while (row.match(/@([^\?]*),([^\?]*)\?/)){
      row = row.replace(/@([^\?]*),([^\?]*)\?/g, "@$1&#44;$2?");
    }
    row = row.replace(/[\?@]/g, "");
    row = row.replace(/\'([^\']*)\'/g, "@$1\?");
    while (row.match(/@([^\?]*),([^\?]*)\?/)){
      row = row.replace(/@([^\?]*),([^\?]*)\?/g, "@$1&#44;$2?");
    }
    row = row.replace(/[\?@]/g, "");
    row = row.split(",")
    for (var j=0; j<row.length; j++){
      col = row[j];
      col = col.replace(/&#63;/g, "\?");
      col = col.replace(/&#64;/g, "@");
      col = col.replace(/&#44;/g, ",");
      col = col.replace(/&#39;/g, '\'');
      col = col.replace(/&quot;/g, '\"');
      col = col.replace(/&#92;/g, '\\');
      col = col.replace(/&amp;/g, "&");
      row[j]=col;
    }
    rows[i] = row;
  }
  return rows;
}

答案 2 :(得分:-2)

这似乎有效。您可能希望翻译日语,但使用起来非常简单: http://code.google.com/p/csvdatajs/