2012-12-13 10 views
13

Ciao a tutti, ho file CSV che sono in questo formato:Come posso leggere il file CSV caricato senza salvarlo sul server?

**CSV Format1** 

    ||OrderGUID||OrderItemID||Qty||SKUID||TrackingNumber||TotalWeight||DateShipped||DateDelivered||ShippingStatusId||OrderShippingAddressId 
    ||5  ||3   ||2 ||12312||aasdasd  ||24   ||2012-12-2010||   || 10025   ||10028 
    ||5  ||4   ||3 ||113123||adadasdasd ||22   ||2012-12-2012||   ||10026   ||10028 



**CSV Format2** 

    ||"OrderGUID"||"OrderItemID"||"Qty"||"SKUID"||"TrackingNumber"||"TotalWeight"||"DateShipped"||"DateDelivered"||"ShippingStatusId"||"OrderShippingAddressId"|| 
    ||"5"  ||"3"   ||"2" ||"12312"||"aasdasd"  ||"24"   ||"2012-12-2010"||""   || "10025"   ||"10028"|| 
    ||"5"  ||"4"   ||"3" ||"113123"||"adadasdasd" ||"22"   ||"2012-12-2012"|| "2012-12-2010" ||"10026"   ||"10028"|| 

devo leggere questi file senza salvarli sul server. Qualcuno può aiutarmi? Come posso leggere questi file e inserirli nel mio db? Come posso tagliare i caratteri speciali dai file?

questo è quello che sto cercando di fare per il caricamento di file:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult ImportTrackingNumber(FormCollection form,HttpPostedFileBase UploadedFile,TrackingNumbersModel Trackingnumbers) 
{ 
    if (UploadedFile != null) 
    { 
     var allowedExtensions = new[] {".xlsx", ".csv"}; 
     if (UploadedFile.ContentLength > 0) 
     {     
      var extension = Path.GetExtension(UploadedFile.FileName); 
      if (extension == ".xlsx") 
      { 
       //Need To code For Excel Files Reading 
      } 
      else if (extension == ".csv") 
      { 
       //string filename = Path.GetFileName(UploadedFile.PostedFile.InputStream); 
       StreamReader csvreader = new StreamReader(UploadedFile.FileName); 
       DataTable dt;   
      } 
     } 
    } 
    return View(); 
} 
+3

'StreamReader csvreader = new StreamReader (UploadedFile.InputStream); '? –

+0

Oltre al commento di Mario: la proprietà 'FileName' restituisce il nome o il percorso del file caricato ** sul client **. Il tuo codice è in esecuzione sul server e non può leggere direttamente i file dal client. –

+0

@RichardDeeming Come utilizzo il delimitatore per la rimozione di caratteri speciali – SoftwareNerd

risposta

34

Solo un esempio di come è possibile leggere il file caricato senza salvarlo sul server:

// Use the InputStream to get the actual stream sent. 
StreamReader csvreader = new StreamReader(UploadedFile.InputStream); 

while (!csvreader.EndOfStream) 
{ 
    var line = csvreader.ReadLine(); 
    var values = line.Split(';'); 
} 
+0

non sarebbe meglio avere line.Split ('/ n') poiché un file csv userà virgole per separare i valori e una nuova riga '/ n' per separare le righe ? – naz786

+1

Beh, no =) In questo caso 'line' è già una" linea "(' csvreader.ReadLine() 'ti darà l'intera riga/riga e ha la logica per identificare la fine di una riga), e quindi' line .Split ('/ n') 'non ha effetto, né è un carattere o un C# valido. –

+0

Se è per quindi StreamReader csvreader = new StreamReader (fileUpload.Postedfile.InputStream); – user2211290

Problemi correlati