当前位置: 代码迷 >> ASP >> asp.net里导出excel表步骤 转载
  详细解决方案

asp.net里导出excel表步骤 转载

热度:350   发布时间:2012-10-08 19:54:56.0
asp.net里导出excel表方法 转载

用dataview

?

?

public void OutputExcel(DataView dv,string str)

{

?? //

?? // TODO: 在此处添加构造函数逻辑

?? //

?????????????????????????? //dv为要输出到Excel的数据,str为标题名称

?? GC.Collect();

?? Application 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.Cells[4,colIndex] = col.ColumnName;

??? xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,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"))

????? {

????? excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");

????? xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐

???? }

???? else

????? if(col.DataType == System.Type.GetType("System.String"))

????? {

????? excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();

????? xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐

???? }

???? else

????? {

????? excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();

???? }

??? }

?? }

?? //

?? //加载一个合计行

?? //

?? int rowSum = rowIndex + 1;

?? int colSum = 2;

?? excel.Cells[rowSum,2] = "合计";

?? xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = XlHAlign.xlHAlignCenter;

?? //

?? //设置选中的部分的颜色

?? //

?? xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();

?? xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种

?? //

?? //取得整个报表的标题

?? //

?? excel.Cells[2,2] = str;

?? //

?? //设置整个报表的标题格式

?? //

?? xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;

?? xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;

?? //

?? //设置报表表格为最适应宽度

?? //

?? xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();

?? xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();

?? //

?? //设置整个报表的标题为跨列居中

?? //

?? xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();

?? xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;

?? //

?? //绘制边框

?? //

?? xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;

?? xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗

?? xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置上边线加粗

?? xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗

?? xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗

?? //

?? //显示效果

?? //

?? 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.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.FileInfo 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.AddHeader("Content-Length", file.Length.ToString());

?

?? // 指定返回的是一个不能被客户端读取的流,必须被下载

?? Response.ContentType = "application/ms-excel";

?

?? // 把文件流发送到客户端

?? Response.WriteFile(file.FullName);

?? // 停止页面的执行

?

?? Response.End();

}

  相关解决方案