protected void btnExcel_Click(object sender, ImageClickEventArgs e)
{
ArrayList arrColumn = new ArrayList();
DataSet ds = null;
ds = getDBData
arrColumn.Add(CreateBoundColumn("code_title", "구분"));
arrColumn.Add(CreateBoundColumn("dlscnt", "제정"));
arrColumn.Add(CreateBoundColumn("dlrcnt", "개정"));
arrColumn.Add(CreateBoundColumn("dltotcnt", "Total"));
arrColumn.Add(CreateBoundColumn("lscnt", "제정"));
arrColumn.Add(CreateBoundColumn("lrcnt", "개정"));
arrColumn.Add(CreateBoundColumn("ltotcnt", "Total"));
arrColumn.Add(CreateBoundColumn("scnt", "제정"));
arrColumn.Add(CreateBoundColumn("rcnt", "개정"));
arrColumn.Add(CreateBoundColumn("totcnt", "Total
string fileName = "order" + DateTime.Now.ToString("yyyyMMdd") + ".xls";
SaveAsExcel(ds, arrColumn, "", fileName); } private void SaveAsExcel(DataSet dsResult, ArrayList columns, string subject, string fileName) { if (fileName.Equals(null) && fileName.Equals("")) fileName = DateTime.Now.ToString("yyyyMMdd") + ".xls"; System.Web.HttpContext.Current.Response.Buffer = true; DataGrid dgExcel = new DataGrid(); dgExcel.ShowHeader = true; dgExcel.Caption = subject; dgExcel.AutoGenerateColumns = false; foreach (object column in columns) dgExcel.Columns.Add((BoundColumn)column); dgExcel.HeaderStyle.BackColor = Color.FromName("powderblue"); dgExcel.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; dgExcel.HeaderStyle.Height = 25; dgExcel.HeaderStyle.Font.Bold = true; dgExcel.DataSource = dsResult; dgExcel.DataBind(); System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("euc-kr"); System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ";charset=euc-kr"); System.Web.HttpContext.Current.Response.ContentType = "application/unknown"; ////////////////////////////////////////////////////////// /// 한글이 깨지는 경우 web.config의 globalization을 euc-kr로 바꿔주세요. ////////////////////////////////////////////////////// System.Web.HttpContext.Current.Response.Write(""); dgExcel.EnableViewState = false; System.IO.StringWriter sWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(sWriter); dgExcel.RenderControl(htmlWriter); System.Web.HttpContext.Current.Response.Write(sWriter.ToString()); System.Web.HttpContext.Current.Response.End(); dgExcel.Dispose(); } public BoundColumn CreateBoundColumn(string DataFieldValue, string HeaderTextValue) { // Create a BoundColumn. BoundColumn column = new BoundColumn(); // Set the properties of the BoundColumn. column.DataField = DataFieldValue; column.HeaderText = HeaderTextValue; return column; } public BoundColumn CreateBoundColumn(string DataFieldValue, string HeaderTextValue, string FormatValue, HorizontalAlign AlignValue) { // Create a BoundColumn using the overloaded CreateBoundColumn method. BoundColumn column = CreateBoundColumn(DataFieldValue, HeaderTextValue); // Set the properties of the BoundColumn. column.DataFormatString = FormatValue; column.ItemStyle.HorizontalAlign = AlignValue; return column; }
by 피요히코~ 2009. 4. 17. 14:40

제네릭(C# 프로그래밍 가이드)

업데이트: 2007년 11월

제네릭이 2.0 버전의 C# 언어와 CLR(공용 언어 런타임)에 추가되었습니다. 제네릭을 통해 .NET Framework에 형식 매개 변수라는 개념이 처음 소개되었습니다. 형식 매개 변수를 사용하면 클라이언트 코드에서 클래스나 메서드를 선언하고 인스턴스화할 때까지 하나 이상의 형식 지정을 연기하는 클래스와 메서드를 디자인할 수 있습니다. 예를 들어, 다음과 같이 제네릭 형식 매개 변수 T를 사용하면 런타임 캐스트나 boxing 작업에 따른 비용이나 위험을 초래하지 않은 채 다른 클라이언트 코드에서 사용 가능한 단일 클래스를 작성할 수 있습니다.


public class GenericList
{
	void Add(T input) { }
}
class TestGenericList
{
	private class ExampleClass { }
	static void Main()
	{
		// Declare a list of type int.
		GenericList list1 = new GenericList();

		// Declare a list of type string.
		GenericList list2 = new GenericList();

		// Declare a list of type ExampleClass.
		GenericList list3 = new GenericList();
	}
}

  • 제네릭 형식을 사용하면 코드 재사용, 형식 안전성 및 성능을 최대화할 수 있습니다.

  • 제네릭의 가장 일반적인 용도는 컬렉션 클래스를 만드는 것입니다.

  • .NET Framework 클래스 라이브러리에는 System.Collections.Generic 네임스페이스의 여러 가지 새로운 제네릭 컬렉션 클래스가 포함되어 있습니다. 이러한 클래스는 가능한 경우 항상 System.Collections 네임스페이스의 ArrayList 같은 클래스 대신 사용해야 합니다.

  • 고유한 제네릭 인터페이스, 클래스, 메서드, 이벤트 및 대리자를 만들 수 있습니다.

  • 특정 데이터 형식의 메서드에만 액세스하도록 제네릭 클래스를 제한할 수 있습니다.

  • 리플렉션을 사용하면 런타임에 제네릭 데이터 형식에 사용되는 형식과 관련된 정보를 얻을 수 있습니다.



출처:MSDN
by 피요히코~ 2009. 2. 27. 13:25
| 1 |