이것은 내 코드이지만 예기치 않은 형식 오류가 발생합니다. MIME 형식에 문제가있어 야합니다. 그러나이 형식은 원래 공식 MIME 형식 인 것으로 확인되었습니다.Excel로 Gridview 내보내기 - 외부 테이블이 예상 된 형식이 아닙니다.
무엇이 누락 되었습니까? 이 메서드로 만드는 모든 문서를 열려고 할 때마다 "손상"것으로 보이지만 멀리 메시지를 클릭하면 모든 것이 제대로 작동합니다.
메시지 : 열려고하는 파일 'name.ext'의 형식이 파일 확장명이 아닌 다른 형식입니다. 파일을 열기 전에 파일이 손상되지 않았고 신뢰할 수있는 출처인지 확인하십시오. 지금 파일을 열시겠습니까?
그러나 유효하지 않기 때문에 파일을 가져올 수 없으므로이 경고를 제거해야합니다. 파일을 2003-2007 형식 .xls로 저장하면 문제가 해결 된 것으로 보입니다. 그러나 이것은 효과적인 해결책이 아닙니다.
protected void ExportToExcel(string fileName)
{
var cmd = new SqlCommand(query);
var dt = GetData(cmd);
var writer = new StringWriter();
var gridview = new GridView();
gridview.AllowPaging = false;
gridview.DataSource = dt;
gridview.DataBind();
Response.Clear();
var hw = new HtmlTextWriter(writer);
gridview.RenderControl(hw);
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
// this.EnableViewState = false;
Response.Write(writer.ToString());
// Response.Flush();
Response.End();
}