【问题标题】:downloading form tag into csv file format将表单标签下载为 csv 文件格式
【发布时间】:2012-12-06 02:31:20
【问题描述】:

我需要一些有关如何将表单下载到 CSV 文件的帮助或指南。我在这里要做的是:

      <form>
<select name="mydropdown">
<option value="Chicken">Fresh Milk</option>
<option value="Apple">Old Cheese</option>
<option value="Bread">Hot Bread</option>
</select>
       </form>
     <input type=button>

GSP 应该是这样的,当下载 csv 文件时,我不确定控制器需要什么,结果应该是正在选择的选项中的值之一并将其显示为文件中的文本。顺便说一句,我正在使用 grails。那么有没有人可以帮助我解决这个问题?我一直在研究它,没有任何结果。

非常感谢你们:)

【问题讨论】:

  • 不知道你在问什么。 “将表单下载到 CSV 文件中”是指将表单字段值作为一行附加到现有 CSV 吗?后来你说“正在下载 csv”,这给了我另一个想法。表单中的文本永远不会被提交,只有字段的内容,所以asdasdasd不会被传输。
  • 对不起,我刚刚编辑过。现在应该更清楚了。当用户从下拉菜单中选择一个选项时。它将选项之一下载到 csv 文件中。
  • 你知道怎么做吗?

标签: forms grails csv download gsp


【解决方案1】:

您可以使用 OpenCSV 来完成这项工作。

定义依赖关系

dependencies {
  ...
  compile('net.sf.opencsv:opencsv:2.0')
  ...
}

创建动作

def export() {
  ByteArrayOutputStream output = new ByteArrayOutputStream()
  char separator = ';'
  CSVWriter writer = new CSVWriter(new OutputStreamWriter(output), separator);
  def line = [params.mydropdown]
  writer.writeNext(line as String[]) 
  //use writeNext as many times as needed
  writer.close()
  byte[] bytes = output.toByteArray()
  //needed to force download
  response.setContentType("text/csv")
  response.setContentLength(bytes.length)
  response.setHeader("Content-Disposition", "attachment; filename=mycsv.csv")
  response.outputStream << bytes
}

将表单更改为导出

<g:form action="export">
...
</g:form>

【讨论】:

  • 感谢您的回复。我有一个错误代码,它指出:找不到匹配的构造函数:liquibase.util.csv.opencsv.CSVWriter(java.io.OutputStreamWriter, java.lang.String)。 Stacktrace 如下:消息:找不到匹配的构造函数:liquibase.util.csv.opencsv.CSVWriter(java.io.OutputStreamWriter, java.lang.String) 你知道这个错误是什么吗?
  • 您好!非常感谢,已经修好了。在该行中: CSVWriter writer = new CSVWriter(new OutputStreamWriter(output), ';');我删除了 ';'并成为 CSVWriter writer = new CSVWriter(new OutputStreamWriter(output));它奏效了。我不确定为什么。你知道吗?
  • 这是因为必须是一个字符,而 groovy 将其定义为一个字符串。我将更新示例。
猜你喜欢
  • 1970-01-01
  • 2019-08-02
  • 2021-11-22
  • 1970-01-01
  • 2018-11-19
  • 2014-11-26
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多