首页 > 技术文章 > salesforce上上传和导出.csv格式文件

Aaronqcd 2015-05-19 14:20 原文

1.导出.csv格式文件:其中会遇到中文乱码问题,会直接生成book.csv文件

<apex:page controller="BookController" cache="true" contentType="text/csv#book.csv" language="en-US">
    Name
    <apex:repeat value="{!BookWithIndex}" var="a">
        {!a.book.name}
    </apex:repeat>
</apex:page>

  BookController如下:

public class BookController {

    public ApexPages.StandardSetController setCon {
        get {
            if(setCon == null) {
                setCon = new ApexPages.StandardSetController(Database.getQueryLocator(
                [SELECT name FROM Book1__c]));
                //setCon.setPageSize(5);
            }
            return setCon;
        }
        set;
    }
    public List<Book1__c> getBooks() {
        return (List<Book1__c>) setCon.getRecords();
    }
    public List<BookWrapper> getBookWithIndex() {
        List<Book1__c> bookList = this.getBooks();
        List<BookWrapper> bookWrapped = new List<BookWrapper>();
        Integer idex = 1;
        for (Book1__c book : bookList) {
            bookWrapped.add(new BookWrapper(book, idex));
            idex++;
        }
        return bookWrapped;
    }
    public class BookWrapper {
        public Book1__c book { get; set; }
        public Integer tabIndex { get; set; }
        public BookWrapper(Book1__c book, Integer tabIndex) {
            this.book = book;
            this.tabIndex = tabIndex;
        }
    }
}

2.上传.csv格式文件,代码如下:

<apex:page controller="importDataFromCSVController">
    <apex:form >
        <apex:pagemessages />
        <apex:pageBlock >
            <apex:pageBlockSection columns="4"> 
                  <apex:inputFile value="{!csvFileBody}"  filename="{!csvAsString}"/>
                  <apex:commandButton value="Import Book" action="{!importCSVFile}"/>
            </apex:pageBlockSection>
        </apex:pageBlock>
        <apex:pageBlock >
           <apex:pageblocktable value="{!accList}" var="acc">
              <apex:column value="{!acc.name}" />
        </apex:pageblocktable>
     </apex:pageBlock>
   </apex:form>
</apex:page>

  importDataFromCSVController代码如下:

public class importDataFromCSVController {
public Blob csvFileBody{get;set;}
public string csvAsString{get;set;}
public String[] csvFileLines{get;set;}
public List<Book1__c> acclist{get;set;}
  public importDataFromCSVController(){
    csvFileLines = new String[]{};
    acclist = New List<Book1__c>(); 
  }
  
  public void importCSVFile(){
       try{
           csvAsString = csvFileBody.toString();
           csvFileLines = csvAsString.split('\n'); 
            
           for(Integer i=1;i<csvFileLines.size();i++){
               Book1__c accObj = new Book1__c() ;
               string[] csvRecordData = csvFileLines[i].split(',');
               accObj.name = csvRecordData[0] ;                                                                                        
               acclist.add(accObj);   
           }
           insert acclist;
        }
        catch (Exception e)
        {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured while importin data Please make sure input csv file is correct');
            ApexPages.addMessage(errorMessage);
        }  
  }
}

  

 

推荐阅读