net导出excel.docx

上传人:b****8 文档编号:9979441 上传时间:2023-02-07 格式:DOCX 页数:19 大小:18.60KB
下载 相关 举报
net导出excel.docx_第1页
第1页 / 共19页
net导出excel.docx_第2页
第2页 / 共19页
net导出excel.docx_第3页
第3页 / 共19页
net导出excel.docx_第4页
第4页 / 共19页
net导出excel.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

net导出excel.docx

《net导出excel.docx》由会员分享,可在线阅读,更多相关《net导出excel.docx(19页珍藏版)》请在冰豆网上搜索。

net导出excel.docx

net导出excel

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

//Additionalnamespace.

usingSystem.Web;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

usingSystem.IO;

usingMicrosoft.Office.Interop.Excel;

usingExtendedSystem.IO;

usingExtendedSystem.Web.UI;

usingExtendedSystem.Web.UI.WebControls;

namespaceExtendedSystem.Web

{

///

///HttpResponse辅助类。

///提供一些用于请求相应的辅助方法,如:

Excel导出、CSV格式导出等。

///

publicstaticclassHttpResponseHelper

{

#regionPrivatemembersandmethods.

///

///表现一个缺失的System.Object值。

///

privatestaticobjectmissing=System.Reflection.Missing.Value;

///

///Excel文件的MIME类型。

///

privatestaticreadonlystringMIMEType_AppExcel="application/excel";

///

///导出Excel(私有方法)。

///须重载导出页VerifyRenderingInServerForm方法,

///禁用基页同名方法。

///

///下载页面实例。

///被导出的GridView实例。

///不包含后缀的文件名。

///字符编码类型(若输出中含有中文,则必须使用UTF7编码,

///否则中文会显示显示为乱码)。

///(可选)被隐藏列索引数组

///(-1表示最后一列,-2表示倒数第二列)。

privatestaticvoidDoExportExcel(PagedownloadPage,GridViewdataSource,stringfileNameWithouExtension,EncodingtextEncoding,paramsint[]hiddenColumnIndexs)

{

#regionVerifyParameters.

if(downloadPage==null)

thrownewArgumentNullException("downloadPage",ExceptionMessageList.ArgumentIsNullOrEmpty);

if(dataSource==null)

thrownewArgumentNullException("dataSource",ExceptionMessageList.ArgumentIsNullOrEmpty);

PathHelper.VerifyFileNameChars(fileNameWithouExtension,"fileNameWithouExtension");

#endregionVerifyParameters.

//隐藏指定类型的列。

GridViewHelper.HideColumns(dataSource,hiddenColumnIndexs);

//转换Web控件为字面值。

ControlHelper.ConvertToLiteral(dataSource,null);

StringWritersw=newStringWriter();

HtmlTextWriterhw=newHtmlTextWriter(sw);

dataSource.RenderControl(hw);

hw.Flush();

hw.Close();

sw.Flush();

sw.Close();

stringfileNameString=string.Format("attachment;filename={0}{1}",

HttpUtility.UrlEncode(fileNameWithouExtension.Trim().Replace(StringHelper.Space,CharHelper.Underscore.ToString())),

FileExtensionList.DotXls);

downloadPage.Response.ContentType=MIMEType_AppExcel;

downloadPage.Response.Clear();

downloadPage.Response.AppendHeader("Content-Disposition",fileNameString);

//当从DataGrid导出时,若输出中含有中文(表头或记录中)必须使用UTF7编码,

//否则中文会显示显示为乱码。

downloadPage.Response.ContentEncoding=textEncoding;

downloadPage.Response.Write(sw);

downloadPage.Response.Flush();

downloadPage.Response.End();

}

///

///将给定控件的内容导出为Excel2003兼容格式的.xls文件

///(注:

WebServer上需安装Excel2003)。

///须重载导出页VerifyRenderingInServerForm方法,

///禁用基页同名方法。

///

///下载页面实例。

///给定控件。

///用于保存临时文件的Web相对路径,形如:

~/temp。

///不包含后缀的文件名。

///导出后是否自动删除临时文件,

///true:

删除临时文件;false:

保留临时文件。

///字符编码类型(若输出中含有中文,则必须使用UTF7编码,

///否则中文会显示显示为乱码)。

///(可选参数)可显示列的列索引数组,仅对GridView有效。

privatestaticvoidDoExportExcelFor2003(PagedownloadPage,Controltarget,stringtempRelativeWebDirectory,stringfileNameWithouExtension,booldeleteTempFile,EncodingtextEncoding,paramsint[]showColumnIndexes)

{

#regionVerifyParameters.

if(downloadPage==null)

thrownewArgumentNullException("downloadPage");

#endregion

stringfullPath=DoCreateExportExcelFor2003(target,tempRelativeWebDirectory,fileNameWithouExtension,textEncoding,showColumnIndexes);

CreateDownLoadPage(downloadPage,deleteTempFile,textEncoding,fullPath);

}

///

///将给定控件的内容导出为Excel2003兼容格式的.xls文件

///(注:

WebServer上需安装Excel2003)。

///须重载导出页VerifyRenderingInServerForm方法,

///禁用基页同名方法。

///

///给定控件。

///用于保存临时文件的Web相对路径,形如:

~/temp。

///不包含后缀的文件名。

///字符编码类型(若输出中含有中文,则必须使用UTF7编码,

///否则中文会显示显示为乱码)。

///(可选参数)可显示列的列索引数组,仅对GridView有效。

privatestaticstringDoCreateExportExcelFor2003(Controltarget,stringtempRelativeWebDirectory,stringfileNameWithouExtension,EncodingtextEncoding,paramsint[]showColumnIndexes)

{

#regionVerifyParameters.

if(target==null)

thrownewArgumentNullException("target");

PathHelper.VerifyFileNameChars(fileNameWithouExtension,"fileNameWithouExtension");

#endregionVerifyParameters.

#region将给定控件Render后写入指定文件。

if(targetisGridView)

{

GridViewHelper.ShowColumns((GridView)target,showColumnIndexes);

}

//转换Web控件为字面值。

ControlHelper.ConvertToLiteral(target,null);

StringWritersw=newStringWriter();

HtmlTextWriterhw=newHtmlTextWriter(sw);

target.RenderControl(hw);

hw.Flush();

hw.Close();

sw.Flush();

sw.Close();

//文件目录。

stringfileDir=HttpContext.Current.Server.MapPath(tempRelativeWebDirectory);

//文件名。

stringfileName=string.Concat(fileNameWithouExtension,FileExtensionList.DotXls);

//全路径=文件目录+文件名。

stringfullPath=Path.Combine(fileDir,fileName);

//将Render后的控件内容写入指定文件。

FileStreamfs=newFileStream(fullPath,FileMode.Create);

StreamWriterstw=newStreamWriter(fs,textEncoding);

stw.Write(sw.ToString());

stw.Flush();

stw.Close();

#endregion

#region转换为Excel2003兼容的格式。

ApplicationoExcel=null;

WorkbooksoBooks=null;

WorkbookoBook=null;

try

{

oExcel=newApplication();

//不显示任何提示信息。

oExcel.DisplayAlerts=false;

//所用到的对象须独立声明。

oBooks=oExcel.Workbooks;

oBook=oBooks.Open(fullPath,missing,missing,missing,missing,missing,missing,missing,

missing,missing,missing,missing,missing,missing,missing);

//XlFileFormat.xlWorkbookNormal格式可同时在Office2003和2007下正常打开。

oBook.SaveAs(fullPath,XlFileFormat.xlWorkbookNormal,missing,missing,false,false,XlSaveAsAccessMode.xlNoChange,missing,missing,missing,missing,missing);

//XlFileFormat.xlCSV即导出.csv文件时使用。

//oBook.SaveAs(fullPath,XlFileFormat.xlCSV,missing,missing,false,false,XlSaveAsAccessMode.xlNoChange,missing,missing,missing,missing,missing);

oBook.Close(missing,fullPath,missing);

oExcel.Quit();

}

finally

{

ClearComObject(oBook);

//须清理。

ClearComObject(oBooks);

ClearComObject(oExcel);

}

#endregion

returnfullPath;

}

///

///将给定控件的内容生成为Excel2003兼容格式的.xls文件

///(注:

WebServer上需安装Excel2003)。

///须重载导出页VerifyRenderingInServerForm方法,

///禁用基页同名方法。

///

///给定控件。

///用于保存临时文件的Web相对路径,形如:

~/temp。

///不包含后缀的文件名。

///字符编码类型(若输出中含有中文,则必须使用UTF7编码,

///否则中文会显示显示为乱码)。

///(可选参数)可显示列的列索引数组,仅对GridView有效。

publicstaticstringCreateExportExcelFor2003(Controltarget,stringtempRelativeWebDirectory,stringfileNameWithouExtension,EncodingtextEncoding,paramsint[]showColumnIndexes)

{

returnDoCreateExportExcelFor2003(target,tempRelativeWebDirectory,fileNameWithouExtension,textEncoding,showColumnIndexes);

}

///

///创建文件下载页。

///

///下载页面实例。

///是否删除临时文件。

///编码。

///下载文件完整路径。

publicstaticvoidCreateDownLoadPage(PagedownloadPage,booldeleteTempFile,EncodingtextEncoding,stringfullPath)

{

#region将导出的.xls文件写入下载页Response流。

stringfileNameString=string.Format("attachment;filename={0}",

HttpUtility.UrlEncode(Path.GetFileName(fullPath).Replace(StringHelper.Space,CharHelper.Underscore.ToString())));

try

{

downloadPage.Response.Clear();

downloadPage.Response.ContentType=MIMEType_AppExcel;

//当从DataGrid导出时,若输出中含有中文(表头或记录中)必须使用UTF7编码,

//否则中文会显示显示为乱码。

downloadPage.Response.ContentEncoding=textEncoding;

downloadPage.Response.AppendHeader("Content-Disposition",fileNameString);

downloadPage.Response.TransmitFile(fullPath);

downloadPage.Response.Flush();

downloadPage.Response.End();

}

catch

{

throw;

}

finally

{

if(deleteTempFile)

File.Delete(fullPath);

}

#endregion

}

///

///清理给定的COM组件对象。

///

///给定的COM组件对象。

privatestaticvoidClearComObject(objecttarget)

{

try

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(target);

}

catch{}

finally

{

target=null;

}

}

/*

*

///

///重载此页面方法,禁用基类验证方法。

///

///

publicoverridevoidVerifyRenderingInServerForm(Controlcontrol)

{

//base.VerifyRenderingInServerForm(control);

}

*

*/

#endregion

#regionZzzSleepingCode:

将GridView直接导出为伪.xls文件。

/*

*

///

///导出Excel。

///须重载导出页VerifyRenderingInServerForm方法,

///禁用基页同名方法。

///

///下载页面实例。

///被导出的GridView实例。

///不包含后缀的文件名。

///字符编码类型(若输出中含有中文,则必须使用UTF7编码,

///否则中文会显示显示为乱码)。

///(可选)被隐藏列索引数组

///(-1表

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1