如何在静态资源中使用Excel文件并在Salesforce Apex中访问其字段

如何在静态资源中使用Excel文件并在Salesforce Apex中访问其字段,salesforce,apex,Salesforce,Apex,我想从静态资源文件中获取代码中的值。 我在静态资源中使用excel文件,我想知道如何将excel文件中的字段映射到代码中的salesforce字段。例如Account.Name等 铅l=新铅; l、 公司=$Resource.EMailServicesLead.EmailServiceStaticResourceData.csv; \不起作用 EMailServicesLead—静态资源的名称。 EmailServiceStaticResourceData-包含字段{FirstName、Last

我想从静态资源文件中获取代码中的值。 我在静态资源中使用excel文件,我想知道如何将excel文件中的字段映射到代码中的salesforce字段。例如Account.Name等

铅l=新铅; l、 公司=$Resource.EMailServicesLead.EmailServiceStaticResourceData.csv; \不起作用 EMailServicesLead—静态资源的名称。 EmailServiceStaticResourceData-包含字段{FirstName、LastName、电子邮件、公司、状态、LeadSource}的csv文件

/** *@文件名:myHandler.cls *@说明: *@作者:ChangeMeIn@UserSettingsUnder.SFDoc *@集团: *@上次修改人:ChangeMeIn@UserSettingsUnder.SFDoc *@最后修改日期:2019年10月7日下午3:54:01 *@修改日志: *版本日期作者修改 * 1.0 7/10/2019 ChangeMeIn@UserSettingsUnder.SFDoc初始版本 **/ 全局共享虚拟类myHandler实现消息传递。InboundEmailHandler { global Messaging.InboundEmailResult handleInboundEmailMessaging.InboundEmail电子邮件,Messaging.InboundEnvelope信封 {Messaging.InboundEmailResult=new Messaging.InboundEmailResult

  //Lead l= (Lead)ListofLeadsStaticRes[0];
  // List<SObject> ListofLeadsStaticRes = {!URLFOR($Resource.EMailServicesLead, 'EmailServiceStaticResourceData.csv')};
  Integer j=0;
  String myPlainText= '';

   staticResource sr = new staticResource();
   List<sObject> ls = Test.loadData(Lead.sObjectType, 'myResource');
  // {!URLFOR($Resource.EMailServicesLead,EMailServicesLead/EmailServiceStaticResourceData.csv)}

  Lead l = new Lead();
  l.FirstName=email.fromName.substring(0,email.fromName.indexOf(''));
  l.LastName=email.fromName.substring(email.fromName.indexOf(''));
  l.Email = envelope.fromAddress;
  myPlainText = email.plainTextBody;
  l.Company = $Resource.EMailServicesLead.EmailServiceStaticResourceData.csv;
  l.Status = $Resource.EMailServicesLead.EmailServiceStaticResourceData.csv;
  l.LeadSource = $Resource.EMailServicesLead.EmailServiceStaticResourceData.csv;
  l.Description = 'Mr.' + l.FirstName + l.LastName + ' enquired about the product Fin' + ' via' + ' Ëmail' + 'with body '+myPlainText;

  Task[] newTask = new Task[0];
  try { // Add a new Task to the Lead record we just found above.
       List<Lead> vLed = [SELECT Id, Name, Email FROM Lead WHERE Email = :email.fromAddress LIMIT 1];
       if(vLed.size()>0)
        { newTask.add(new Task(Description =  myPlainText,
                                  Priority = 'Normal',
                                  Status = 'Inbound Email',
                                  Subject = email.subject,
                                  IsReminderSet = true,
                                  ReminderDateTime = System.now()+1,
                                  WhoId =  vLed[0].Id));
          insert newTask;
          System.debug('New Task Object: ' + newTask ); 
        }
       else 
        {
          insert l;
          System.debug('Lead Created'+ l.Id);
        }
       }
    catch (QueryException e) {  System.debug('Query Issue: ' + e); }     
    return  result;
 }

}

您需要解析CSV以从中提取数据。为了便于使用,您可以查看代码以了解其工作原理,但您将使用的只是构造函数和readLine方法,该方法将CSV中每一行的值列表作为字符串返回。您必须将代码从该链接复制并粘贴到apex类命名为SSSCsvReader能够使用它,然后在您的代码中,您将

1.以字符串形式获取静态资源CSV

2.通过调用构造函数来创建SSSCsvReader的实例,该构造函数将CSV字符串作为参数传入,并且可以选择使用分隔符的第二个参数,但逗号是默认值

SSSCsvReader csvR=新的SSSCSvReaderCvData

3.使用SSSCsvReader对象上的readLine获取字符串列表中的CSV字段值。如果文件上有标题行,请不要忘记在获取数据列表之前调用readLine一次,先删除该行

csvR.readLine() //Removing header (optional)
String[] line = csvR.readLine();
if(line == null){return null} //No line in the file or there was no header so return
4.将从readLine返回的列表中的每个字段分配给salesforce对象中的相应字段

Lead l = new Lead();
l.firstName = line[0]; //If your file is laid out like you said FirstName will be index [0]
l.lastName = line[1]; //LastName will be index [1]
.... //And so on
....
....
这里有一个Lead对象,其中包含CSV静态资源文件中的字段。如果CSV上有更多的行,并且希望创建多个Lead,而不仅仅是设置一个while循环,使用readLine从CSV获取每一行,请从此行创建一个新Lead并将其添加到列表中

Lead l = new Lead();
l.firstName = line[0]; //If your file is laid out like you said FirstName will be index [0]
l.lastName = line[1]; //LastName will be index [1]
.... //And so on
....
....