gridview 데이터를 Excel로 내보내는 연구
GridView Export the Excel (Basic Code):
우선 기초적인 응용을 보자.표를 만듭니다. 캡처 참조.
그런 다음 데이터베이스의 데이터를 GridView의 데이터에 바인딩합니다. 코드는 다음과 같습니다.
복사
보존
private void BindData()
{
SqlConnection myConnection
= new SqlConnection("Server=localhost;Database=School;Trusted_Connection=true");
SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Users", myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
gvUsers.DataSource = ds;
gvUsers.DataBind();
}
이제 GridView에 데이터가 바인딩되었습니다. 다음 작업은 Excel로 내보내는 것입니다.다음은 버튼 이벤트의 코드입니다.
복사
보존
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvUsers.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
그리고 Verify Rendering InServer Form 방법도 오버라이드해야 합니다. (이 점은 매우 중요합니다. 그렇지 않으면 단추를 누르면 오류가 발생합니다. 번역자 주석) 코드는 다음과 같습니다.
복사
보존
public override void VerifyRenderingInServerForm(Control control)
{
}
내보내기 단추를 누르면 대화상자가 튀어나와 열거나 저장할 것을 묻습니다.열기 파일을 선택하여 다음 그림과 같이 Excel로 내보냅니다.
Exporting GridView to Excel With Style:
당신은 상기 코드에 약간의 문제가 존재하는 것을 알아차렸습니까?예, ID 열의 첫 번째 0이 모두 잘렸습니다.만약 당신의 ID가 000345라면, 내보낸 후에 345를 프로그래밍할 것입니다.이 문제는 css를 출력 흐름에 추가해서 해결할 수 있습니다.ID 열이 올바르게 표시되려면 텍스트 형식으로 저장해야 합니다.Excel의 텍스트 형식은 "mso-number-format:"/@"입니다.
복사
보존
protected void Btn_ExportClick(object sender, EventArgs e)
{
string style = @"<style> .text { mso-number-format:/@; } </script> ";
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvUsers.RenderControl(htw);
// Style is added dynamically
Response.Write(style);
Response.Write(sw.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
위의 코드에서 "style"변수를 통해 GridView 열의 스타일을 제어합니다.Respnose를 통해Write 메서드는 출력 흐름에 추가합니다.마지막으로 스타일을 ID 열에 추가합니다.이 단계는 RowDataBound 이벤트에서 수행해야 합니다.
복사
보존
protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].Attributes.Add("class", "text");
}
}
수정된 결과는 다음과 같습니다.
Exporting GridView With LinkButtons and Paging:
내보내려는 GridView에 LinkButton 또는 페이지 나누기 (페이지 코드가 나타날 경우 번역자 참고) 가 포함된 경우 오류가 발생합니다.
복사
보존
<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
페이지 파일을 수정하면 이 문제를 수정할 수 있습니다: EnableEventValidation = "false".
내보낸 파일 보기
내보낸 파일에서linkbutton과dropdownlist 컨트롤을 볼 수 있습니다. 비록 dropdownlist 컨트롤러가 표시하는 데이터는 사용자가 선택한 항목이지만 아무리 봐도 내보낸 파일 같지 않습니다. (나는 매우 쿨하다고 생각합니다:) 번역자 주석) 이제 어떻게 dropdownlist를 제거하고 선택한 문자를 표시해야 합니까?
DisableControls 함수를 썼습니다. 순환하는 방법으로linkbutton과dropdownlist를literal 컨트롤로 바꿉니다.
복사
보존
private void DisableControls(Control gv)
{
LinkButton lb = new LinkButton();
Literal l = new Literal();
string name = String.Empty;
for (int i = 0; i < gv.Controls.Count; i++)
{
if (gv.Controls[i].GetType() == typeof(LinkButton))
{
l.Text = (gv.Controls[i] as LinkButton).Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
else if (gv.Controls[i].GetType() == typeof(DropDownList))
{
l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;
gv.Controls.Remove(gv.Controls[i]);
gv.Controls.AddAt(i, l);
}
if (gv.Controls[i].HasControls())
{
DisableControls(gv.Controls[i]);
}
}
}
방법은 매우 간단합니다. linkbuton과dropdownlist를literal 컨트롤러로 바꾸고 선택 항목을literal 컨트롤러의 텍스트 속성에 값을 부여합니다.이 방법은 내보내기 전에 호출해야 한다
복사
보존
protected void Btn_ExportExcelPaging(object sender, EventArgs e)
{
DisableControls(gvUsers);
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvUsers.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
지금 엑셀에는 선택된 텍스트만 남았어요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
localStorage에 객체를 추가하는 방법은 무엇입니까?이 노트에서는 localStorage에 객체를 삽입하는 방법을 보여드리겠습니다. 경우에 따라 로컬 스토리지 또는 세션 스토리지에 데이터를 개체로 저장해야 할 수 있습니다. 어떻게 이것을 달성할 수 있습니까? 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.