public void OutputExcel(DataView dv,string str) 
{ 
//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(); 
} 
上面的方面,均将要导出的excel数据,直接给浏览器输出文件流,下面的方法是首先将其存到服务器的某个文件夹中,然后把文件发送到客户端。这样可以持久的把导出的文件存起来,以便实现其它功能。
5、将excel文件导出到服务器上,再下载。
二、winForm中导出Excel的方法:
1、方法1:
复制代码 代码如下:
