ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:21.35KB ,
资源ID:9182865      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9182865.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#导出Excel总结.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#导出Excel总结.docx

1、C#导出Excel总结C#导出Excel总结 一、 中导出Execl的方法:在中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上;一种是将文件直接将文件输出流写给浏览器。在Response输出时,/t分隔的数据,导出execl时,等价于分列,/n等价于换行。1、将整个html全部输出execl此法将html中所有的内容,如按钮,表格,图片等全部输出到Execl中。Response.Clear(); Response.Buffer= true; Response.AppendHeader(Content-Disposition,attachme

2、nt;filename=+DateTime.Now.ToString(yyyyMMdd)+.xls); Response.ContentEncoding=System.Text.Encoding.UTF8; Response.ContentType = application/vnd.ms-excel; this.EnableViewState = false; 这里我们利用了ContentType属性,它默认的属性为text/html,这时将输出为超文本,即我们常见的网页格式到客户端,如果改为ms-excel将将输出excel格式,也就是说以电子表格的格式输出到客户端,这时浏览器将提示你下载

3、保存。ContentType的属性还包括:image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 。同理,我们也可以输出(导出)图片、word文档等。下面的方法,也均用了这个属性。2、将DataGrid控件中的数据导出Execl上述方法虽然实现了导出的功能,但同时把按钮、分页框等html中的所有输出信息导了进去。而我们一般要导出的是数据,DataGrid控件上的数据。System.Web.UI.Control ctl=this.DataGrid1;/DataGrid1是你在窗体中拖放的控件HttpContext.Current.Response.A

4、ppendHeader(Content-Disposition,attachment;filename=Excel.xls); HttpContext.Current.Response.Charset =UTF-8; HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; HttpContext.Current.Response.ContentType =application/ms-excel;ctl.Page.EnableViewState =false; System.IO.StringWri

5、ter tw = new System.IO.StringWriter() ; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); ctl.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString(); HttpContext.Current.Response.End(); 如果你的DataGrid用了分页,它导出的是当前页的信息,也就是它导出的是DataGrid中显示的信息。而不是你select语句的全部信息。为方便使用,写成

6、方法如下:public void DGToExcel(System.Web.UI.Control ctl) HttpContext.Current.Response.AppendHeader(Content-Disposition,attachment;filename=Excel.xls); HttpContext.Current.Response.Charset =UTF-8; HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; HttpContext.Current.Response.Co

7、ntentType =application/ms-excel; ctl.Page.EnableViewState =false; System.IO.StringWriter tw = new System.IO.StringWriter() ; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); ctl.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString(); HttpContext.Current.Response.

8、End(); 用法:DGToExcel(datagrid1); 3、将DataSet中的数据导出Execl有了上边的思路,就是将在导出的信息,输出(Response)客户端,这样就可以导出了。那么把DataSet中的数据导出,也就是把DataSet中的表中的各行信息,以ms-excel的格式Response到http流,这样就OK了。说明:参数ds应为填充有数据表的DataSet,文件名是全名,包括后缀名,如execl2006.xlspublic void CreateExcel(DataSet ds,string FileName) HttpResponse resp; resp = Pag

9、e.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding(GB2312); resp.AppendHeader(Content-Disposition, attachment;filename=+FileName); string colHeaders= , ls_item=; /定义表对象与行对象,同时用DataSet对其值进行初始化 DataTable dt=ds.Tables0; DataRow myRow=dt.Select();/可以类似dt.Select(id10)之形式达到数据筛选目的 int i=0;

10、 int cl=dt.Columns.Count;/取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符 for(i=0;icl;i+)if(i=(cl-1)/最后一列,加/ncolHeaders +=dt.Columnsi.Caption.ToString() +/n; elsecolHeaders+=dt.Columnsi.Caption.ToString()+/t; resp.Write(colHeaders); /向HTTP输出流中写入取得的数据信息 /逐行处理数据 foreach(DataRow row in myRow) /当前行数据写入HTTP输出流,并且置空ls_

11、item以便下行数据 for(i=0;icl;i+)if(i=(cl-1)/最后一列,加/nls_item +=rowi.ToString()+/n; elsels_item+=rowi.ToString()+/t; resp.Write(ls_item); ls_item=; resp.End(); 4、将dataview导出execl若想实现更加富于变化或者行列不规则的execl导出时,可用本法。public void OutputExcel(DataView dv,string str) /dv为要输出到Excel的数据,str为标题名称 GC.Collect(); Applicatio

12、n excel;/ = new Application(); int rowIndex=4; int colIndex=1; _Workbook xBk; _Worksheet xSt; excel= new ApplicationClass(); xBk = excel.Workbooks.Add(true); xSt = (_Worksheet)xBk.ActiveSheet; / /取得标题 / foreach(DataColumn col in dv.Table.Columns) colIndex+; excel.Cells4,colIndex = col.ColumnName; xS

13、t.get_Range(excel.Cells4,colIndex,excel.Cells4,colIndex).HorizontalAlignment = XlVAlign.xlVAlignCenter;/设置标题格式为居中对齐 / /取得表格中的数据 / foreach(DataRowView row in dv) rowIndex +; colIndex = 1; foreach(DataColumn col in dv.Table.Columns) colIndex +; if(col.DataType = System.Type.GetType(System.DateTime) ex

14、cel.CellsrowIndex,colIndex = (Convert.ToDateTime(rowcol.ColumnName.ToString().ToString(yyyy-MM-dd); xSt.get_Range(excel.CellsrowIndex,colIndex,excel.CellsrowIndex,colIndex).HorizontalAlignment = XlVAlign.xlVAlignCenter;/设置日期型的字段格式为居中对齐 else if(col.DataType = System.Type.GetType(System.String) excel.

15、CellsrowIndex,colIndex = +rowcol.ColumnName.ToString(); xSt.get_Range(excel.CellsrowIndex,colIndex,excel.CellsrowIndex,colIndex).HorizontalAlignment = XlVAlign.xlVAlignCenter;/设置字符型的字段格式为居中对齐 else excel.CellsrowIndex,colIndex = rowcol.ColumnName.ToString(); / /加载一个合计行 / int rowSum = rowIndex + 1; in

16、t colSum = 2; excel.CellsrowSum,2 = 合计; xSt.get_Range(excel.CellsrowSum,2,excel.CellsrowSum,2).HorizontalAlignment = XlHAlign.xlHAlignCenter; / /设置选中的部分的颜色 / xSt.get_Range(excel.CellsrowSum,colSum,excel.CellsrowSum,colIndex).Select(); xSt.get_Range(excel.CellsrowSum,colSum,excel.CellsrowSum,colIndex

17、).Interior.ColorIndex = 19;/设置为浅黄色,共计有56种 / /取得整个报表的标题 / excel.Cells2,2 = str; / /设置整个报表的标题格式 / xSt.get_Range(excel.Cells2,2,excel.Cells2,2).Font.Bold = true; xSt.get_Range(excel.Cells2,2,excel.Cells2,2).Font.Size = 22; / /设置报表表格为最适应宽度 / xSt.get_Range(excel.Cells4,2,excel.CellsrowSum,colIndex).Selec

18、t(); xSt.get_Range(excel.Cells4,2,excel.CellsrowSum,colIndex).Columns.AutoFit(); / /设置整个报表的标题为跨列居中 / xSt.get_Range(excel.Cells2,2,excel.Cells2,colIndex).Select(); xSt.get_Range(excel.Cells2,2,excel.Cells2,colIndex).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection; / /绘制边框 / xSt.get_Range

19、(excel.Cells4,2,excel.CellsrowSum,colIndex).Borders.LineStyle = 1; xSt.get_Range(excel.Cells4,2,excel.CellsrowSum,2).BordersXlBordersIndex.xlEdgeLeft.Weight = XlBorderWeight.xlThick;/设置左边线加粗 xSt.get_Range(excel.Cells4,2,excel.Cells4,colIndex).BordersXlBordersIndex.xlEdgeTop.Weight = XlBorderWeight.x

20、lThick;/设置上边线加粗 xSt.get_Range(excel.Cells4,colIndex,excel.CellsrowSum,colIndex).BordersXlBordersIndex.xlEdgeRight.Weight = XlBorderWeight.xlThick;/设置右边线加粗 xSt.get_Range(excel.CellsrowSum,2,excel.CellsrowSum,colIndex).BordersXlBordersIndex.xlEdgeBottom.Weight = XlBorderWeight.xlThick;/设置下边线加粗 / /显示效果

21、 / excel.Visible=true; /xSt.Export(Server.MapPath(.)+/+this.xlfile.Text+.xls,SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML); xBk.SaveCopyAs(Server.MapPath(.)+/+this.xlfile.Text+.xls); ds = null; xBk.Close(false, null,null); excel.Quit(); System.

22、Runtime.InteropServices.Marshal.ReleaseComObject(xBk); System.Runtime.InteropServices.Marshal.ReleaseComObject(excel); System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt); xBk = null; excel = null; xSt = null; GC.Collect(); string path = Server.MapPath(this.xlfile.Text+.xls); System.IO.File

23、Info file = new System.IO.FileInfo(path); Response.Clear(); Response.Charset=GB2312; Response.ContentEncoding=System.Text.Encoding.UTF8; / 添加头信息,为文件下载/另存为对话框指定默认文件名 Response.AddHeader(Content-Disposition, attachment; filename= + Server.UrlEncode(file.Name); / 添加头信息,指定文件大小,让浏览器能够显示下载进度 Response.AddHe

24、ader(Content-Length, file.Length.ToString(); / 指定返回的是一个不能被客户端读取的流,必须被下载 Response.ContentType = application/ms-excel; / 把文件流发送到客户端 Response.WriteFile(file.FullName); / 停止页面的执行 Response.End(); 上面的方面,均将要导出的execl数据,直接给浏览器输出文件流,下面的方法是首先将其存到服务器的某个文件夹中,然后把文件发送到客户端。这样可以持久的把导出的文件存起来,以便实现其它功能。5、将execl文件导出到服务器

25、上,再下载。二、winForm中导出Execl的方法:1、方法1:public void Out2Excel(string sTableName,string url)Excel.Application oExcel=new Excel.Application();Workbooks oBooks;Workbook oBook;Sheets oSheets;Worksheet oSheet;Range oCells;string sFile=,sTemplate=;/System.Data.DataTable dt=TableOut(sTableName).Tables0;sFile=url+

26、/myExcel.xls;sTemplate=url+/MyTemplate.xls;/oExcel.Visible=false;oExcel.DisplayAlerts=false;/定义一个新的工作簿oBooks=oExcel.Workbooks;oBooks.Open(sTemplate,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Miss

27、ing, Type.Missing, Type.Missing);oBook=oBooks.get_Item(1);oSheets=oBook.Worksheets;oSheet=(Worksheet)oSheets.get_Item(1);/命名该sheetoSheet.Name=Sheet1;oCells=oSheet.Cells;/调用dumpdata过程,将数据导入到Excel中去DumpData(dt,oCells);/保存oSheet.SaveAs(sFile,Excel.XlFileFormat.xlTemplate,Type.Missing,Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing);oBook.Close(false, Type.Missing,Type.Missing);/退出Excel,并且释放调用的COM资源oExcel.Quit();GC.Collect();KillProcess(Excel);private void KillProcess(string processName)System

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

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