JSP和SPRING Boot:从JSON输入生成CSV文件吗? [英] JSP and SPRING Boot : Generate CSV file from JSON input?
问题描述
我做了一些研究,但找不到解决方法.当用户单击客户侧的使用mailId导出记录时",我希望能够从数据库中将某些记录导出到CSV.实现此目标的最佳方法是什么?在我的研究中,我发现人们仅使用Servlets作为示例,但对我而言,我不使用Servlets.
I did some research but could not find how to solve this. I want to give the possibility to export to CSV some records from my database when a user click on "Export Records withoud mailId" on clien side. What is the best way to achieve this? In my research I find out that people use only Servlets as examples but for me I dont use Servlets.
这是我的控制者:
@RequestMapping(value = "/eblnotif/exportMailId", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody List<EblNotifResource> exportMailIdCsv(@RequestBody Filters filters)
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException,
SecurityException, IOException {
List<EblNotif> eblnotif_list = accountSservice.exportMailIdCsv(filters);
List<EblNotifResource> eblnotifres = new ArrayList<>();
for (EblNotif eblNotif : eblnotif_list) {
EblNotifResource eblres = new EblNotifResource();
eblres.setFormName(eblNotif.getFormName());
eblres.setSendingDate(eblNotif.getSendingDate());
eblres.setMode(eblNotif.getMode());
eblres.setLanguage(eblNotif.getLanguage());
eblres.setGpart(eblNotif.getGpart());
eblres.setEmail(eblNotif.getEmail());
eblres.setMailId(eblNotif.getMailId());
eblnotifres.add(eblres);
}
return eblnotifres;
}
}
并将这种json格式返回给客户端(JSP):
And gives back to the client (JSP) this json format:
[
{
"formName":"FormName1",
"mode":"S",
"language":"F",
"sendingDate":"2017-04-03",
"gpart":"555",
"email":"",
"mailId":"96318"
},
{
"formName":"FormName2",
"mode":"S",
"language":"F",
"sendingDate":"2017-04-03",
"gpart":"444",
"email":"",
"mailId":"96325"
}
]
csv中所需的输出类似于:
The desired output in the csv will be something like:
formName;mode;language;sendingDate;gpart;email;mailId
FormName1;S;F;2017-04-03;555;testing@test;96318
FormName2;S;F;2017-04-03;444;testing@test;96325
推荐答案
有多种方法可以转换为CSV,但只有一种方法
There are a number of ways to convert to a CSV but one way
@RequestMapping(value = "/eblnotif/exportMailId", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody String exportMailIdCsv(@RequestBody Filters filters) throws IllegalAccessException,
IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, IOException {
List<EblNotif> eblnotif_list = accountSservice.exportMailIdCsv(filters);
String separator = ";";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
StringBuilder sb = new StringBuilder();
sb.append("formName;mode;language;sendingDate;gpart;email;mailId").append(System.lineSeparator());
for (EblNotif eblNotif : eblnotif_list) {
sb.append(eblNotif.getFormName()).append(separator);
sb.append(eblNotif.getMode()).append(separator);
sb.append(eblNotif.getLanguage()).append(separator);
sb.append(dateFormat.format(eblNotif.getSendingDate())).append(separator);
sb.append(eblNotif.getGpart()).append(separator);
sb.append(eblNotif.getEmail()).append(separator);
sb.append(eblNotif.getMailId()).append(separator);
sb.append(System.lineSeparator());
}
return sb.toString();
}
这篇关于JSP和SPRING Boot:从JSON输入生成CSV文件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!