2014-02-20 2 views
0

이것은 이상한 것입니다 ... 저는 서버에 CSV 파일을 가지고 있으며 아래 코드를 통해 사용자가 사용할 수 있도록합니다.System.Web.HttpContext.Current.Response는 필드를 구문 분석합니다.

공동 이름, 프로세스 날짜, 직원 ID, 성, 이름, 커스트 인증, ENTERED_HRS, 노동 유형

: 일반적으로 설정 한 결과는 항상 마지막 레코드의 마지막 필드를 생략하는 것을 제외하고 정확

온도, 2014년 2월 21일, CONTRACTOR0001, Dahlenburg, 에릭, 131137057134,5,0

온도, 2014년 2월 21일, CONTRACTOR0001, Dahlenburg, 에릭, 1411310002,8,0

온도 2014 -02-21, CONTRACTOR0001, Dahlenburg, Eric, 1411320015,6.69,0

온도, 2014- 02-21, CONTRACTOR0001, Dahlenburg, Eric, 1413500001105,6

마지막 레코드의 끝에 ", 0"이 없습니까? Visual Studio에서는 잘 작동하지만 개발 서버에서는 마지막 부분을 생략합니다.

원본 CSV 파일에 모든 데이터 필드가 있는지 확인했습니다. CSV 파일에 대해 다른 경로 위치를 시도했지만 변경하지 않았습니다. 왜 비주얼 스튜디오가 아닌 서버에서 작동하는지 이해할 수 없습니다.

부록 : 중요한지는 모르겠지만 소스 파일은 서버의 가상 디렉터리 (실제 파일이 아님)에 있습니다. 어떤 아이디어 ???

  // Causes Save As Dialog box to appear for user. 
      String FileName = fileName; 
      String FilePath = strFilePath; 

      System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.ClearContent(); 
      response.Clear(); 
      response.ContentType = "text/csv"; 
      response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
      response.WriteFile(FilePath + FileName); 
      response.Flush(); 
      response.Close(); 
      // response.End(); // Same as response.TransmitFile(), but causes an exception because it raises the EndRequest event. 

답변

0

시행 착오를 많이 후, 나는 콘텐츠 유형을 사용하는 경우 나는 그것이 작동시킬 수 있다는 것을 발견 :

  response.ContentType = "application/csv"; 

확실하지 이유는, 텍스트/CSV 다릅니다 만 그 지금 일하고있어. 또한, 당신은뿐만 아니라

  response.ContentType = "application/vnd.ms-excel"; 

를 사용할 수 있지만 당신이 어쨌든 열고 자 할 파일이 적절한 형식이 아닌 사용자에게 메시지를 표시 할 것.

에릭

관련 문제