用apex导入Excel

时间:2019-04-29 07:42:03

标签: salesforce apex

我在使用顶点时遇到了问题:我创建了一个对话框,允许我加载CSV文件。但是,当我加载它时,它返回以下错误消息:

  

09:17:41:021 VARIABLE_ASSIGNMENT [19] | e |“ common.apex.runtime.impl.ExecutionException:BLOB不是有效的UTF-8字符串” | 0x72d1bdb2

在CSV文件中,有诸如“-”和“ _”之类的符号。我怀疑这就是加载失败的原因。

这是我的代码:

public class ImportExcel {  
    public String fileName {get; set;}
    public Blob contentFile {get; set;}
    public String[] csvFileLines {get; set;}
    public List<String> acclist {get; set;}
    public String[] data {get; set;}

    public ImportExcel() {
        csvFileLines = new String[]{};
        acclist = New List<String>();
    }

    public void readFile() {
        try {
            fileName = contentFile.toString();
            system.debug(fileName);
        } catch (Exception e) {
            ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.FATAL,'Please upload a valid CSV document');
            ApexPages.addMessage(myMsg);
            return;
        }

        csvFileLines=fileName.split('\n');
        for (Integer i = 1; i < csvFileLines.size(); i++) {
            data = csvFileLines[i].split(',');
            acclist.add(csvFileLines[i]);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

问题出在代码中无法处理的文件二进制数据中。

contentFileBlob,当您使用contentFile.toString()时,函数将查找兼容的UTF-8字符串。您的数据可能包含toString()无法使用的二进制数据。

如果仍然需要将二进制数据存储为字符串,则可以使用EncodingUtil.base64Encode(contentFile)

更多信息herehere