2011-03-18 2 views
2

우리는 다운로드 가능한 탭 구분 파일이 있습니다. 파일 확장명은 txt이지만 사용자가 Excel에서 자동으로 열리길 원합니다. 이전 개발자는 다음 코드를 사용했다 :asp.net을 사용하면 브라우저에서 Excel에서 탭으로 구분 된 txt 파일을 열 수 있습니까?

private void DownloadLinkButtonCommandEventHandler(object sender, CommandEventArgs e) 
{ 
    Response.ContentType = "Application/x-msexcel"; 
    var filePath = (string)e.CommandArgument; 
    Response.AppendHeader("content-disposition", 
          "attachment; filename=" + filePath); 
    Response.WriteFile(filePath); 
    Response.End(); 
} 

적인 contentType가 Excel로 설정되고,하지만 그 어떤 영향을 미칠 것 같지 않습니다. 나는 txt 파일 확장자가 메모장이나 그와 유사한 것에 의해 선택되는 것으로 추측하고있다. xls 확장명으로 이름을 바꿔 보았습니다. 작동하지만 Excel에서 트릭을 시도하거나 손상된 파일 일 수 있다고 불평합니다. 이것에 대한 쉬운 승리? 아마도 Excel 파일로 변환해야 할 것입니다.

+0

피드백을 주셔서 감사합니다. 내가 취할 수있는 많은 옵션이있었습니다. 방금 첫 번째 유효한 답변을 답글로 표시했지만 모두에게 시간을내어 주셔서 감사합니다. –

답변

2

파일을 열고 내용을 데이터 구조로 읽어 들인 다음 Excel 구성 요소를 사용하여 Excel 형식으로 다시 불러올 수 있습니다 (현재 저는 NPOI 팬입니다).

+0

꽤 무거운 무게 .... –

2

MIME 유형 (ContentType)은 신뢰할 수 없습니다. IE는 응답 스트림에 지정된 콘텐츠 형식을 무시하고 다운로드 된 파일 확장명에 대한 기본 응용 프로그램을 여는 경향이 있습니다.

파일을 \t을 (를) , (으)로 바꾸면 쉽게 파일을 CSV로 변환 할 수 있습니까?

+0

제안을 주셔서 감사합니다 매튜,하지만이 경우 데이터에는 때때로 쉼표가 있습니다. 여전히 할 수 있지만 이상적은 아닙니다. –

2

내부에서 열려면 처리가 "첨부 파일"이 아니라 "인라인"이어야합니다.

IE 특히은 파일 이름의 끝 부분에 까다 롭습니다. iirc 나는 단지 ?s=.xls으로 성공했습니다. 즉, URL의 마지막 부분 만 보았습니다. 콘텐츠 유형이 아닙니다.

예에서 명확하지 않지만 스트림에 예기치 않은 사항이 없는지 확인해야합니다. 특히 매트는 이미 작성된 헤더를 지울 필요가 있습니다. 무슨 실제로 와이어 내려가 확인하기 위해 바이올린과 같은 것을 사용하십시오.

2

최상의 선택은 브라우저에 기본 Excel 파일을 다시 작성하는 것입니다.

http://epplus.codeplex.com/

IE는 때때로 MIME 형식을 무시; Firefox는 mimetype이 전송되면 확장자를 무시합니다.

1

이전에는 잘 알고 있었지만, 새로운 버전의 Office는 이미 발견 한 것처럼 바보짓을하려고 할 때 좋아하지 않습니다. Excel에서는 tab-delimited .txt 파일을 열 수 있지만 broswer에서 직접 열려고하는 것처럼 들립니다. Excel에서 지원하는 XML 스프레드 시트 형식을 살펴볼 수 있습니다. 그러나 확장자가 .xmlss 여야합니다.

그렇지 않으면 타사 라이브러리를 사용하여 다른 사람들과 마찬가지로 서버에서 Excel 문서를 생성해야합니다. 또는 가능한 경우 CSV와 같은 다른 형식으로 전환하십시오.

관련 문제