2012-12-13 31 views
13

Hi all, Tôi có file CSV mà là ở định dạng này:Tôi làm cách nào để đọc tệp CSV đã tải lên mà không lưu tệp vào Máy chủ?

**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"|| 

tôi phải đọc những tập tin mà không lưu chúng trên máy chủ. Ai giúp tôi với? Làm thế nào tôi có thể đọc các tập tin này và chèn vào db của tôi? Làm thế nào tôi có thể cắt các ký tự đặc biệt từ các tập tin?

Đây là những gì tôi đang cố gắng để làm cho các tập tin tải lên:

[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

Thêm vào nhận xét của Mario: thuộc tính 'FileName' trả về tên hoặc đường dẫn của tệp được tải lên ** trên máy khách **. Mã của bạn đang chạy trên máy chủ và không thể đọc trực tiếp các tệp từ ứng dụng khách. –

+0

@RichardDeeming Làm cách nào để sử dụng dấu phân cách để xóa các ký tự đặc biệt – SoftwareNerd

Trả lời

34

Chỉ cần một ví dụ về cách bạn có thể đọc các tập tin được tải lên mà không lưu nó trên máy chủ:

// 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

sẽ không tốt hơn nếu có dòng. ? – naz786

+1

Vâng, không =) Trong trường hợp này 'dòng' đã là một" dòng "(' csvreader.ReadLine() 'sẽ cung cấp cho bạn toàn bộ dòng/hàng và có logic để xác định kết thúc của một dòng), và do đó' dòng .Split ('/ n') 'sẽ không có hiệu lực, cũng không phải là một char hoặc C# hợp lệ. –

+0

Nếu tệp thì StreamReader csvreader = new StreamReader (fileUpload.Postedfile.InputStream); – user2211290

Các vấn đề liên quan