有没有办法从CSV数据创建文件并下载

时间:2019-04-03 15:51:49

标签: javascript wixcode

在wix上,我有一个将一堆信息上载到数据库(名称,电子邮件,地址等)的表单。然后,我有一个单独的页面,该页面从数据库中获取数据并将其编译为CSV格式。

它当前将其输出到一个文本框中,从那里我可以将其复制到txt文件中,并将扩展名更改为csv。这对我来说很好用,但是如果其他人也能做到这一点,我就不会乐观。

所以,我的问题是是否有办法将数据转换为文件然后下载?

我的数据看起来像这样:

“ _ id,lastName,firstname

345893458,史密斯,约翰”

1 个答案:

答案 0 :(得分:2)

我想通了,对于任何想知道这是解决方案的人。

您需要在wix页面上创建一个iframe对象

然后您将其html代码更改为类似以下内容:

<!doctype html>
<html>
<head>

<script type="text/javascript">
  function init () {
    window.onmessage = (event) => {
      if (event.data) {
        download('data.csv', event.data)
      }
    }
  }

  //download file
  function download(filename, text) {
    var element = document.createElement('a');
    element.setAttribute('href', 'data:text/plain;charset=utf-8,' +                     encodeURIComponent(text));
    element.setAttribute('download', filename);

    element.style.display = 'none';
    document.body.appendChild(element);

    element.click();

    document.body.removeChild(element);
  }

  </script>

</head>
  <body onload="init();" style="background-color:black;">
  </body>
</html>

请注意,设置背景颜色很重要,虽然不确定原因,但我很确定它会以某种方式初始化代码。

接下来,您要将这样的行添加到wix代码编辑器中

export function button2_click(event) {
  // send message to the HTML Component
  let data = $w('#output').value
  $w("#html1").postMessage(data);
}

其中'output'是包含csv数据的文本框的ID(您可以从其他地方获取数据),而'html1是iframe容器的ID

确保该功能链接到按钮按下。