在 Apex 代码中生成 csv 文件

在 Apex 代码中生成 csv 文件可以写一个 Visualforce 页面,设定类型为 excel 的格式,然后调用 PageReferencegetContent()方法来获取 Blob 格式,存放在附件。

不过另一种更简单的方式就是拼接字符串,csv 即逗号分隔值,所以 csv 文件的内容即一串字符串,用逗号分隔值。

代码:

String csvString = 'header1,header2,header3';
csvString += '\n';
csvString += 'value1,value2,value3';
csvString = '\ufeff' + csvString; // 前缀字节序标记
Blob csvBlob = Blob.valueOf(csvString);

csvBlob即生成的 csv 文件。

不过在 Microsoft Office Excel 中,打开 ASCII 码字符以外的字符,会出现乱码,需要在 csv 文件的最前面加上一个字节序标记符号(\ufeff)。所以在上面代码中生成字符串时前面加了一个 \ufeff

当 csv 的值中出现了逗号(,),双引号("),换行符(\n) 时,需要将这些值用双引号。特别地,对于值中的双引号("),要在双引号前再加一个双引号来避免歧义。

比如 csv 中一行的值如下
value1
value2withcomma,
value3withlinebreak\n
value4withdoublequote"

生成 csv 字符串时需生成为 value1,"value2withcomma,","value3withlinebreak\n","value4withdoublequote"""


References
1. Salesforce Developer Forum
2. Common Format and MIME Type for Comma-Separated Values (CSV) Files

posted @ 2015-07-16 09:49  sfdcdev  阅读(600)  评论(0编辑  收藏  举报