Asp.net 내 보 내기 Excel(2)

이전 블 로 그 는 엑셀 을 초보 적 으로 내 보 내 는 데 발생 한 문 제 를 다 루 고 있다.지금 엑셀 내 보 내기 절 차 를 구체 적 으로 쓰 세 요.   대량의 데이터 에 대해 엑셀 을 내 보 내 는 방법 은 다음 과 같다.    (1)DataTable 로 Excel 내 보 내기     StringWriter 클래스 사용:문자열 에 정 보 를 기록 합 니 다.이름 공간:System.IO
      구체 적 인 원 리 는:      먼저 DataTable 의 열 이름 을 읽 은 다음 DataTable 줄 값 을 반복 해서 읽 습 니 다.      그리고 내 보 낼 인 코딩,내 보 낼 형식 을 설정 합 니 다.      마지막 으로 StringWriter 대상 을 출력 하면 됩 니 다.      이 내 보 내기 는 파일 을 브 라 우 저 에 직접 파일 흐름 으로 출력 하 는 것 입 니 다.
   
private  StringWriter GetStringWriter(DataTable dt)
    {
        StringWriter sw = new StringWriter();
        //   
        foreach (DataColumn dc in dt.Columns)
            sw.Write(dc.ColumnName + "\t");
        //   
        //     
        sw.Write(sw.NewLine);
              if (dt != null)
        {
            foreach (DataRow dr in dt.Rows)
            {
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    sw.Write(dr[i].ToString() + "\t");
                }
                sw.Write(sw.NewLine);
            }
        }
        sw.Close();
            
        return sw;
    }
protected void ExcelImport(DataTable dt, string ExportFileName)
    {
        StringWriter sw = GetStringWriter(dt);
        //    
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        //           
        string fileName = HttpUtility.UrlEncode (ExportFileName, System.Text.Encoding.UTF8);
        //   
        string str = "attachment;filename=" + fileName + ".xls";
        //      ,           
        HttpContext.Current.Response.AppendHeader("Content-Disposition", str);//http    
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        this.Page.EnableViewState = false;
        Response.Write(sw);
        Response.End();
 }
 protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new SelectCourseManager().SelectByCollegeAndProperty(ddlCourseProperty.Text, ddlCollege.SelectedValue);
        if (dt.Rows.Count == 0)
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascriopt' defer>alert('    ,      ');</script>");
        else
        { 
            //  Excel
            ExcelImport(dt, "  ");
            
         }

    }

      Excel 을 내 보 낼 때 가장 관건 적 인 것 은 인 코딩 문제 입 니 다.서로 다른 형식 으로 Excel 인 코딩 을 내 보 내 는 형식 이 다 릅 니 다.그렇지 않 으 면 내 보 낸 Excel 파일 은 중국어 로 어 지 러 운 코드 를 표시 합 니 다.DataTable 에서 Excel 을 내 보 낼 때 현재 출력 된 인 코딩 스타일 은 중국어 간 체 GB 2312 입 니 다.
      HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
      내 보 낸 파일 이름:UTF 8 인 코딩
        string fileName = HttpUtility.UrlEncode (ExportFileName, System.Text.Encoding.UTF8);

좋은 웹페이지 즐겨찾기