제목 : XML 을 이용한 엑셀다운로드
글번호:
|
|
157
|
작성자:
|
|
최성춘
|
작성일:
|
|
2007/04/16 오후 7:13:00
|
조회수:
|
|
7039
|
/// <summary>
/// XSL을 이용한 Excel파일 다운로드
/// </summary>
/// <param name="ds">변환할 DataSet</param>
/// <param name="sTemplateFileName">템플릿파일 경로</param>
public static void SaveExcelByXSL(DataSet ds, string sTemplateFileName)
{
//임시 디렉토리의 모든 화일 삭제
DirectoryInfo dInfo = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["Excel_VSaveDir"]);
FileInfo[] fInfos = dInfo.GetFiles();
foreach(FileInfo f in fInfos)
{
if(f.LastWriteTime.ToShortDateString() != DateTime.Now.ToShortDateString())
f.Delete();
}
//DOM 로딩
XmlDataDocument doc = new XmlDataDocument(ds);
XPathNavigator nav = doc.CreateNavigator();
XslCompiledTransform xslt = new XslCompiledTransform();
//xsl Template 파일 경로
string sXslTemplateFullPath = System.Configuration.ConfigurationManager.AppSettings["Excel_TempDir"] + sTemplateFileName;
//temp 파일명
string sFileName = String.Format("{0:yyyyMMddhhmmsss}", System.DateTime.Now);
//temp 파일의 물리적 FullPath
string file =
System.Configuration.ConfigurationManager.AppSettings["Excel_VSaveDir"]
+ sFileName + ".xls";
//DataSet 을 Excel형식으로 변환
xslt.Load(sXslTemplateFullPath);
XmlTextWriter writer = new XmlTextWriter(file, Encoding.UTF8);
xslt.Transform(nav, writer);
writer.Close();
//다운로드
string sVfileName =
System.Configuration.ConfigurationManager.AppSettings["Excel_VSaveURL"] + sFileName + ".xls";
HttpContext.Current.Response.Redirect(sVfileName);
}