我有以下问题。我正在使用Primefaces,JSF和Java。我试图生成一个csv文件与数据库的数据和导出它与组件p:fileDownload的primefaces。CSV的生成没有问题,但有些数据是带有逗号init的字符串,因此结果是在不同的列中分隔开。有没有办法再设置一个分隔符?(例如;)。
生成字节数组的方法如下:
public byte[] generateCsv(){
StringBuilder data = new StringBuilder();
data.append("header1, header2, header3\n");
for (element elem : listElements) {
data.append(elem.getCode()+","+elem.getName()+","+elem.getData+"\n");
}
byte[] bytes = String.valueOf(data).getBytes();
return bytes;
}
在前端,bean有这个方法:
public StreamedContent exportCsv() {
try {
byte[] cert = businessBean.generateCsv();
if (cert != null) {
InputStream targetStream = new ByteArrayInputStream(cert);
StreamedContent file = new DefaultStreamedContent(targetStream, "application/csv", "Example.csv");
return file;
} else {
//ERROR
}
} catch (Exception ex) {
}
return null;
}
在xhtml中生成csv的按钮是这样的:
<p:fileDownload contentDisposition="inline" value="#{exampleBean.exportCsv()}" />
结果:如果每列的元素应该是:
column1= elem1
column2= elem2.1,elem2.2
column3=elem3.1,elem3.2
文件中的每个元素都是这样的。
column1= elem1
column2= elem2.1
column3=elem2.2
column4=elem3.1
column5=elem3.2
有办法设置不同的分隔符吗?谢谢
2条答案
按热度按时间nle07wnf1#
您可以在PF 7.0或更高版本中使用
options
属性!固定:https://github.com/primefaces/primefaces/issues/48
你的Options类看起来像这样,设置为冒号(:),例如……
voase2hg2#
在Primefaces 11中,你不能再设置分隔符了。但也许
做你需要的事