QnA
사용언어
(칠해주세요) => (C#,VB) |
사용툴 (VS) : VS 2005
|
운영체제 (OS) : XP |
상세언어(칠해주세요.)
=> 1) ASP.NET, 2) ASP.NET MVC, 3) ASP.NET AJAX |
안녕하세요.
저번에 해당됐던 문제들은 무식하지만 각 row별로 foreach돌려서 html 값뽑고 DB에 넣는걸로 했습니다. ㅠㅠ
이번에는 다른 문제인데요~
회사에서 Office 2003에서 2007 이상으로 거의 다 교체를 했는데..
xls로 다운받아 열면 아래와 같은 오류창이 나오면서 꼭 'y' 버튼을 눌러야 합니다.
다운 받아서 열때마다 메시지가 떠서, 이부분을 xlsx로 변경해서 받으려고 하는데 그게 잘 안되네요 ㅠㅠ
아래는 xls로 다운 받을때 사용했던 소스입니다.
// Excel로 내보내기
protected void btnExcel_Click(object sender, EventArgs e)
{
//export to excel
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=" + DateTime.Now.ToString("yyyyMMdd") + ".xls");
Response.ContentType = "application/vnd.ms-excel";
//Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Charset = "euc-kr";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("euc-kr");
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.ClearControls(GridView1);
GridView1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
// DataGrid 내에 생성되었던 Controls을 제거해준다 (Button 등)
private void ClearControls(Control control)
{
for (int i = control.Controls.Count - 1; i >= 0; i--)
{
ClearControls(control.Controls[i]);
}
if (!(control is TableCell))
{
if (control.GetType().GetProperty("SelectedItem") != null)
{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
try
{
literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control, null);
}
catch
{
}
control.Parent.Controls.Remove(control);
}
else
if (control.GetType().GetProperty("Text") != null)
{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control, null);
control.Parent.Controls.Remove(control);
}
}
return;
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Confirms that an HtmlForm control is rendered for the specified ASP.NET
server control at run time. */
}
}
아래와 같이 ContentType를 변경하고, .xlsx로 확장자를 변경해서 열면
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
이렇게 열리지도 않고요..
Google로 찾아봤지만... 으?.. 딱히 해결책이 있는건 아니네요 ㅠㅠ
혹시 해결하신분 계실까요?
첫댓글 http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html#sthash.FttK51ZC.Pdcn90Dm.dpbs
적용해봐야 겠네요~ 감사합니다.