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