使用组件文件导出csv当数据包含逗号时,下载素数会产生逗号分隔符问题



我有以下问题。我正在使用Primefaces、JSF和Java。我正在尝试用数据库的数据生成一个csv文件,并用组件p:file导出它primefaces的下载。csv的生成没有问题,但有些数据是带逗号init的字符串,因此结果是在不同的列中分离。有没有办法设置另一个分隔符?(例如;(。

生成字节数组的方法是:

public byte[] generateCsv(){
StringBuilder data = new StringBuilder();
data.append("header1, header2, header3n");
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

有办法设置不同的分隔符吗?感谢

您可以在PF 7.0或更高版本中使用options属性!

固定:https://github.com/primefaces/primefaces/issues/48

<p:dataExporter type="csv" target="tbl" fileName="cars" options="#{view.csvOptions}" />

您的Options类看起来像这样设置为冒号(:(,例如。。。

public CSVOptions getCsvOptions() {
CSVOptions options = new CSVOptions();
options.setDelimiterChar(":");
return options;
}

最新更新