IEnumerable 매개 변수에서 Excel 파일로 값을 내보내는 메서드를 작성했습니다. 메서드는 내 작은 테스트 클래스에서 잘 작동했으며 나는 LINQ 클래스로 내 메서드를 테스트 할 때까지 행복했습니다.LINQ 생성 클래스와 IEnumerable에서 Excel로 문제가 발생했습니다.
방법 :
public static void IEnumerableToExcel<T>(IEnumerable<T> data, HttpResponse Response)
{
Response.Clear();
Response.ContentEncoding = System.Text.Encoding.Default;
Response.Charset = "windows-1254";
// set MIME type to be Excel file.
Response.ContentType = "application/vnd.ms-excel;charset=windows-1254";
// add a header to response to force download (specifying filename)
Response.AddHeader("Content-Disposition", "attachment;filename=\"ResultFile.xls\"");
Type typeOfT = typeof(T);
List<string> result = new List<string>();
FieldInfo[] fields = typeOfT.GetFields();
foreach (FieldInfo info in fields)
{
result.Add(info.Name);
}
Response.Write(String.Join("\t", result.ToArray()) + "\n");
foreach (T t in data)
{
result.Clear();
foreach (FieldInfo f in fields)
result.Add((typeOfT).GetField(f.Name).GetValue(t).ToString());
Response.Write(String.Join("\t", result.ToArray()) + "\n");
}
Response.End();
}
나의 작은 시험 등급 :
public class Mehmet
{
public string FirstName;
public string LastName;
}
두 사용법 :
성공 :
Mehmet newMehmet = new Mehmet();
newMehmet.FirstName = "Mehmet";
newMehmet.LastName = "Altiparmak";
List<Mehmet> list = new List<Mehmet>();
list.Add(newMehmet);
DeveloperUtility.Export.IEnumerableToExcel<Mehmet>(list, Response);
실패 :
오류 이유 : 코드가 템플릿 필드를 가져 오는 데 사용 된 코드 블록 (T)에 도달하면 LINQ 생성 된 사용자 클래스에 대한 필드를 찾을 수 없습니다. 나의 이상한 클래스를 위해 그것은 잘 작동한다.
왜?
감사합니다 ... 샘플 클래스는 public 필드의 데이터를 노출하면서, 민간 분야의 데이터 (그의 이름은 밑줄로 시작) SQL 저장소에 LINQ에 의해 생성