javascript - 使用 Javascript 或 Jquery 自动导入本地 CSV 文件

标签 javascript jquery csv local

我的客户想要一个包含导入 CSV 数据而不托管在服务器上的网站。这个想法是为了让他们的销售人员可以展示他们的产品,而无需在他们的 PC 上设置 Web 访问或托管。他们还可以通过从原始 Excel 文档导出新的 CSV 文件来更新数据,而无需任何 HTML 或 Javascript 知识。

我在网上找到了很多解决方案——比如 Papa Parse (http://papaparse.com/),但它们都要求用户使用 <input type="file" /> 选择文件.例如,使用 Papa Parse 的以下脚本运行良好:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test CSV</title>
</head>
<body>
  <input type="file" />
</body>
<script src="js/jquery-1.10.1.min.js"></script>
<script src="js/jquery.parse.min.js"></script>
<script language="javascript">
  $('input').change(function(e) {
    $('input[type=file]').parse({
        complete: function(data) {
            console.log('Parse results:', data.results);
        }
    });
});
</script>
</html>

我的问题是我需要能够对 CSV 文件的位置进行硬编码,以便在打开网页时自动显示数据,而无需用户进行任何进一步的交互。这可能吗?还是我忽略了一些非常基本的东西?

最佳答案

对非 JavaScript 的脚本标签内的值进行硬编码 typetext/csv然后用 innerHTML 或 $("#unparsed").html() 提取它

<script type="text/csv" id="unparsed">
    url,title,size
    images/address-book.png?1354486198, Address Book, 1904 KB
    images/front-row.png?1354486198, Front Row, 401 KB
    images/google-pokemon.png?1354486198, Google Pokémon, 12875 KB
    ...
</script>

$(function parseData(){
    $("#file").hide();
    var data = $("#unparsed").html();
    var parsed = $.parse(data);
    $("#parsed").val(JSON.stringify(parsed));
})

http://jsbin.com/racanefi/10/edit

硬编码文本区域内的值。
$(function parseData(){
  $("#file").hide();
  var data = $("#unparsed").val();
  var parsed = $.parse(data);
  $("#parsed").val(JSON.stringify(parsed));
})

http://jsbin.com/racanefi/8/edit

或者

将值存储在 localStorage 中。
var storage = localStorage;
var key = 'unparsed_text_file';

function getFile(){
$("#file").change(function(){
  var file = $(this).eq(0)[0].files[0],
    reader = new FileReader();
    reader.onload = function(e) {
      var text = reader.result;
      storage.setItem(key,text);
      parseData();
    };
    reader.readAsText(file);
});
}

function parseData(){
  $("#file").hide();
  var data = storage.getItem(key);
  var parsed = $.parse(data);
  $("#unparsed").val(data);
  $("#parsed").val(JSON.stringify(parsed));
}

if(storage.getItem(key))
  parseData();
else
  getFile();

http://jsbin.com/racanefi/6/edit

浏览器兼容性:
http://caniuse.com/namevalue-storage

这是一个粗略的草案,您可能应该在实现之前对其进行质量检查。

编辑:我有它向后 sessionStorage 在 session 之间是临时的。 localStorage 更永久。我创建了一个变量,可让您将存储分配给 var storage

关于javascript - 使用 Javascript 或 Jquery 自动导入本地 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172045/

相关文章:

php - MySQL 转义行中断导出为 CSV?

javascript - 如何从脚本提交表单

javascript - Bootstrap Accordion 表内带有链接的按钮

jquery - 防止其他链接在 AJAX 调用期间工作

javascript - 打开存储在 PHP 中的 onclick 输入

c# - 如何在控制台中打印 CSV 文件?

javascript - 滚动时如何在上下浏览器窗口上获得固定的模糊效果?

javascript - 查看一组项目是否放置在数组的特定部分中的最佳方法是什么?

javascript - 更改 .match() 中的捕获组顺序

r - 如何在R中溶解多边形并传递原始属性信息