添加引用,选择.NET选项卡,找到 Microsoft.Office.Interop.Excel.dll 确定
1
using
System;
2 using System.Data;
3 using System.Configuration;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.HtmlControls;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Xml.Linq;
12 using System.Collections;
13 using Microsoft.Office.Interop.Excel;
14 using System.Data.OleDb;
15 using System.IO;
2 using System.Data;
3 using System.Configuration;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.HtmlControls;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Xml.Linq;
12 using System.Collections;
13 using Microsoft.Office.Interop.Excel;
14 using System.Data.OleDb;
15 using System.IO;
1
namespace
WebTest
2 {
3 /// <summary>
4 /// Excel导入,导出,模板生成-公共模块整理
5 /// </summary>
6 public class ExcelOperate
7 {
8 /// <summary>
9 /// 自定义类,键值对应
10 /// </summary>
11 public class ArrList
12 {
13 public string Key { get ; set ; }
14 public string Value { get ; set ; }
15 /// <summary>
16 /// 构造函数赋值
17 /// </summary>
18 /// <param name="key"> 键 </param>
19 /// <param name="value"> 值 </param>
20 public ArrList( string key, string value)
21 {
22 Key = key;
23 Value = value;
24 }
25 }
26 /// <summary>
27 /// 单例
28 /// </summary>
29 private static ExcelOperate excelOperate = new ExcelOperate();
30 public static ExcelOperate _
31 {
32 get { return excelOperate; }
33 }
34
35 /// <summary>
36 /// 创建OLEDB数据库连接
37 /// </summary>
38 /// <param name="filepath"> excel文件全路径 </param>
39 /// <returns> Oledb的连接实例 </returns>
40 private OleDbConnection CreateConnection( string filepath)
41 {
42 string connectionstring = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filepath + " ;Extended Properties=Excel 8.0 " ;
43 return new OleDbConnection(connectionstring);
44 }
45 /// <summary>
46 /// 获取所有当前Excel所有表
47 /// </summary>
48 /// <param name="filepath"> excel文件全路径 </param>
49 /// <returns> sheet表名的集合 </returns>
50 public ArrayList GetExcelSheetNameList( string filepath)
51 {
52 ArrayList sheetList = new ArrayList();
53 // 连接
54 OleDbConnection connection = CreateConnection(filepath);
55 try
56 {
57 connection.Open();
58 // 取sheet表名
59 System.Data.DataTable dtExcelSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null );
60 for ( int i = 0 ; i < dtExcelSchema.Rows.Count; i ++ )
61 {
62 sheetList.Add(dtExcelSchema.Rows[i][ " TABLE_NAME " ].ToString());
63 }
64 }
65 catch (Exception ex)
66 {
67 throw new Exception(ex.Message);
68 }
69 finally
70 {
71 // 关闭连接
72 connection.Close();
73 }
74 return sheetList;
75 }
76 /// <summary>
77 /// 查询Excel中指定的Sheet表
78 /// </summary>
79 /// <param name="filepath"> excel文件全路径 </param>
80 /// <param name="sheet"> sheet表名 </param>
81 /// <returns> 返回DataTable </returns>
82 public System.Data.DataTable GetDataTableBySheetName( string filepath, string sheetname)
83 {
84 System.Data.DataTable tempTable = new System.Data.DataTable();
85 OleDbConnection connection = CreateConnection(filepath);
86 try
87 {
88 // 读取
89 connection.Open();
90 string sql = " select * from [ " + sheetname + " ] " ;
91 OleDbCommand cmd = connection.CreateCommand();
92 cmd.CommandText = sql;
93 OleDbDataAdapter oda = new OleDbDataAdapter(cmd);
94 // 填充
95 oda.Fill(tempTable);
96 // 验证
97 if (tempTable != null && tempTable.Rows.Count <= 0 )
98 {
99 return null ;
100 }
101 }
102 catch (Exception ex)
103 {
104 throw new Exception(ex.Message);
105 }
106 finally
107 {
108 // 关闭
109 connection.Close();
110 }
111 return tempTable;
112 }
2 {
3 /// <summary>
4 /// Excel导入,导出,模板生成-公共模块整理
5 /// </summary>
6 public class ExcelOperate
7 {
8 /// <summary>
9 /// 自定义类,键值对应
10 /// </summary>
11 public class ArrList
12 {
13 public string Key { get ; set ; }
14 public string Value { get ; set ; }
15 /// <summary>
16 /// 构造函数赋值
17 /// </summary>
18 /// <param name="key"> 键 </param>
19 /// <param name="value"> 值 </param>
20 public ArrList( string key, string value)
21 {
22 Key = key;
23 Value = value;
24 }
25 }
26 /// <summary>
27 /// 单例
28 /// </summary>
29 private static ExcelOperate excelOperate = new ExcelOperate();
30 public static ExcelOperate _
31 {
32 get { return excelOperate; }
33 }
34
35 /// <summary>
36 /// 创建OLEDB数据库连接
37 /// </summary>
38 /// <param name="filepath"> excel文件全路径 </param>
39 /// <returns> Oledb的连接实例 </returns>
40 private OleDbConnection CreateConnection( string filepath)
41 {
42 string connectionstring = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filepath + " ;Extended Properties=Excel 8.0 " ;
43 return new OleDbConnection(connectionstring);
44 }
45 /// <summary>
46 /// 获取所有当前Excel所有表
47 /// </summary>
48 /// <param name="filepath"> excel文件全路径 </param>
49 /// <returns> sheet表名的集合 </returns>
50 public ArrayList GetExcelSheetNameList( string filepath)
51 {
52 ArrayList sheetList = new ArrayList();
53 // 连接
54 OleDbConnection connection = CreateConnection(filepath);
55 try
56 {
57 connection.Open();
58 // 取sheet表名
59 System.Data.DataTable dtExcelSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null );
60 for ( int i = 0 ; i < dtExcelSchema.Rows.Count; i ++ )
61 {
62 sheetList.Add(dtExcelSchema.Rows[i][ " TABLE_NAME " ].ToString());
63 }
64 }
65 catch (Exception ex)
66 {
67 throw new Exception(ex.Message);
68 }
69 finally
70 {
71 // 关闭连接
72 connection.Close();
73 }
74 return sheetList;
75 }
76 /// <summary>
77 /// 查询Excel中指定的Sheet表
78 /// </summary>
79 /// <param name="filepath"> excel文件全路径 </param>
80 /// <param name="sheet"> sheet表名 </param>
81 /// <returns> 返回DataTable </returns>
82 public System.Data.DataTable GetDataTableBySheetName( string filepath, string sheetname)
83 {
84 System.Data.DataTable tempTable = new System.Data.DataTable();
85 OleDbConnection connection = CreateConnection(filepath);
86 try
87 {
88 // 读取
89 connection.Open();
90 string sql = " select * from [ " + sheetname + " ] " ;
91 OleDbCommand cmd = connection.CreateCommand();
92 cmd.CommandText = sql;
93 OleDbDataAdapter oda = new OleDbDataAdapter(cmd);
94 // 填充
95 oda.Fill(tempTable);
96 // 验证
97 if (tempTable != null && tempTable.Rows.Count <= 0 )
98 {
99 return null ;
100 }
101 }
102 catch (Exception ex)
103 {
104 throw new Exception(ex.Message);
105 }
106 finally
107 {
108 // 关闭
109 connection.Close();
110 }
111 return tempTable;
112 }
1
///
<summary>
2 /// 根据模板生成Excel
3 /// </summary>
4 /// <param name="modelpath"> 模板excel文件全路径 </param>
5 /// <param name="newpath"> 生成的目录全路径 </param>
6 /// <param name="values"> ExcelOperate.ArrList类型的键值数组 </param>
7 /// <returns></returns>
8 public string ExportExcelByModel( string modelpath, string newpath, params ArrList[] values)
9 {
10 // 调用的模板文件
11 FileInfo mode = new FileInfo(modelpath);
12 if ( ! mode.Exists)
13 {
14 return " Error:文件不存在! " ;
15 }
16 // 定义
17 Application objExcel = new Application();
18 objExcel.Application.DisplayAlerts = false ;
19 objExcel.Visible = false ;
20 Workbook objBook = null ;
21 Object missing = System.Reflection.Missing.Value;
22 if (objExcel == null )
23 {
24 return " Error:无法创建Excel对象,可能您的机子未安装Excel " ;
25 }
26 try
27 {
28 objExcel.Workbooks.Add(missing);
29 // 调用模板
30 objBook = objExcel.Workbooks.Open(mode.FullName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
31 // 取表
32 Worksheet objSheet = (Worksheet)objBook.Worksheets[ 1 ];
33 // 成功条数记录
34 bool isSuccess = false ;
35 // 值
36 for ( int i = 0 ; i < values.Length; i ++ )
37 {
38 isSuccess = false ;
39 // 行
40 for ( int j = 1 ; j <= objSheet.UsedRange.Rows.Count; j ++ )
41 {
42 // 列
43 for ( int k = 1 ; k < objSheet.UsedRange.Columns.Count; k ++ )
44 {
45 // 取值
46 Range objRange = (Range)objSheet.Cells[j, k]; // objSheet.get_Range("A" + i, missing);
47 if (objRange.Value2 == null )
48 {
49 continue ;
50 }
51 // 验证
52 string value = objRange.Value2.ToString();
53 // string value = values[i].Split("===");
54 if (value != values[i].Key)
55 {
56 continue ;
57 }
58 // 赋值
59 objSheet.Cells[j, k] = values[i].Value;
60 isSuccess = true ;
61 break ;
62 }
63 if (isSuccess)
64 {
65 break ;
66 }
67 }
68 }
69 // 保存
70 objSheet.SaveAs(newpath, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel7, missing, missing, false , false , missing, missing, missing, missing);
71 }
72 catch (Exception ex)
73 {
74 return " Error: " + ex.Message;
75 }
76 finally
77 {
78 // 关闭
79 objBook.Close( false , mode.FullName, missing);
80 objExcel.Workbooks.Close();
81 objExcel.Quit();
82 // 结束进程
83 if (objExcel != null )
84 {
85 foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName( " Excel " ))
86 {
87 // 先判断当前进程是否是excel
88 if ( ! p.CloseMainWindow())
89 {
90 p.Kill();
91 }
92 }
93 }
94 objBook = null ;
95 objExcel = null ;
96 // 强制对所有代进行垃圾回收
97 GC.Collect();
98 }
99 return " Success " ;
100 }
101 /// <summary>
102 /// 读取DataTable生成Excel
103 /// </summary>
104 /// <param name="filepath"> 保存的excel文件全路径 </param>
105 /// <param name="filename"> 保存时的文件名 </param>
106 /// <param name="table"> 数据来源DataTable </param>
107 /// <returns></returns>
108 public string ExportExcelByDataTable( string filepath, string filename, System.Data.DataTable table)
109 {
110 string ret = " 导出成功 " ;
111 if (table == null )
112 {
113 return ret = " 无数据 " ;
114 }
115 // 定义
116 Application objExcel = new Application();
117 if (objExcel == null )
118 {
119 ret = " Error:无法创建Excel对象,可能您的机子未安装Excel " ;
120 }
121 Workbooks objBooks = objExcel.Workbooks;
122 Workbook objBook = objBooks.Add(XlWBATemplate.xlWBATWorksheet);
123 Worksheet objSheet = (Worksheet)objBook.Worksheets[ 1 ];
124
125 // 写入字段
126 for ( int i = 0 ; i < table.Columns.Count; i ++ )
127 {
128 objSheet.Cells[ 1 , i + 1 ] = table.Columns[i].ColumnName;
129 }
130 // 写入值
131 for ( int r = 0 ; r < table.Rows.Count; r ++ )
132 {
133 for ( int i = 0 ; i < table.Columns.Count; i ++ )
134 {
135 objSheet.Cells[r + 2 , i + 1 ] = " ' " + table.Rows[r][i].ToString();
136 }
137 }
138 // worksheet.Columns.EntireColumn.AutoFit();
139 try
140 {
141 if (filename == "" )
142 {
143 ret = " Error:请传入导出后的文件名 " ;
144 }
145 string savePath = filepath + filename;
146 objBook.Saved = true ;
147 objBook.SaveCopyAs(savePath);
148 ret = " Success " ;
149 }
150 catch (Exception ex)
151 {
152 ret = " Error:导出文件时出错,文件可能正被打开!\n " + ex.Message;
153 }
154 finally
155 {
156 // 关闭
157 objExcel.Quit();
158 objBook = null ;
159 objExcel = null ;
160 GC.Collect(); // 强行销毁
161 }
162 return ret;
163 }
164 }
165 }
2 /// 根据模板生成Excel
3 /// </summary>
4 /// <param name="modelpath"> 模板excel文件全路径 </param>
5 /// <param name="newpath"> 生成的目录全路径 </param>
6 /// <param name="values"> ExcelOperate.ArrList类型的键值数组 </param>
7 /// <returns></returns>
8 public string ExportExcelByModel( string modelpath, string newpath, params ArrList[] values)
9 {
10 // 调用的模板文件
11 FileInfo mode = new FileInfo(modelpath);
12 if ( ! mode.Exists)
13 {
14 return " Error:文件不存在! " ;
15 }
16 // 定义
17 Application objExcel = new Application();
18 objExcel.Application.DisplayAlerts = false ;
19 objExcel.Visible = false ;
20 Workbook objBook = null ;
21 Object missing = System.Reflection.Missing.Value;
22 if (objExcel == null )
23 {
24 return " Error:无法创建Excel对象,可能您的机子未安装Excel " ;
25 }
26 try
27 {
28 objExcel.Workbooks.Add(missing);
29 // 调用模板
30 objBook = objExcel.Workbooks.Open(mode.FullName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
31 // 取表
32 Worksheet objSheet = (Worksheet)objBook.Worksheets[ 1 ];
33 // 成功条数记录
34 bool isSuccess = false ;
35 // 值
36 for ( int i = 0 ; i < values.Length; i ++ )
37 {
38 isSuccess = false ;
39 // 行
40 for ( int j = 1 ; j <= objSheet.UsedRange.Rows.Count; j ++ )
41 {
42 // 列
43 for ( int k = 1 ; k < objSheet.UsedRange.Columns.Count; k ++ )
44 {
45 // 取值
46 Range objRange = (Range)objSheet.Cells[j, k]; // objSheet.get_Range("A" + i, missing);
47 if (objRange.Value2 == null )
48 {
49 continue ;
50 }
51 // 验证
52 string value = objRange.Value2.ToString();
53 // string value = values[i].Split("===");
54 if (value != values[i].Key)
55 {
56 continue ;
57 }
58 // 赋值
59 objSheet.Cells[j, k] = values[i].Value;
60 isSuccess = true ;
61 break ;
62 }
63 if (isSuccess)
64 {
65 break ;
66 }
67 }
68 }
69 // 保存
70 objSheet.SaveAs(newpath, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel7, missing, missing, false , false , missing, missing, missing, missing);
71 }
72 catch (Exception ex)
73 {
74 return " Error: " + ex.Message;
75 }
76 finally
77 {
78 // 关闭
79 objBook.Close( false , mode.FullName, missing);
80 objExcel.Workbooks.Close();
81 objExcel.Quit();
82 // 结束进程
83 if (objExcel != null )
84 {
85 foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName( " Excel " ))
86 {
87 // 先判断当前进程是否是excel
88 if ( ! p.CloseMainWindow())
89 {
90 p.Kill();
91 }
92 }
93 }
94 objBook = null ;
95 objExcel = null ;
96 // 强制对所有代进行垃圾回收
97 GC.Collect();
98 }
99 return " Success " ;
100 }
101 /// <summary>
102 /// 读取DataTable生成Excel
103 /// </summary>
104 /// <param name="filepath"> 保存的excel文件全路径 </param>
105 /// <param name="filename"> 保存时的文件名 </param>
106 /// <param name="table"> 数据来源DataTable </param>
107 /// <returns></returns>
108 public string ExportExcelByDataTable( string filepath, string filename, System.Data.DataTable table)
109 {
110 string ret = " 导出成功 " ;
111 if (table == null )
112 {
113 return ret = " 无数据 " ;
114 }
115 // 定义
116 Application objExcel = new Application();
117 if (objExcel == null )
118 {
119 ret = " Error:无法创建Excel对象,可能您的机子未安装Excel " ;
120 }
121 Workbooks objBooks = objExcel.Workbooks;
122 Workbook objBook = objBooks.Add(XlWBATemplate.xlWBATWorksheet);
123 Worksheet objSheet = (Worksheet)objBook.Worksheets[ 1 ];
124
125 // 写入字段
126 for ( int i = 0 ; i < table.Columns.Count; i ++ )
127 {
128 objSheet.Cells[ 1 , i + 1 ] = table.Columns[i].ColumnName;
129 }
130 // 写入值
131 for ( int r = 0 ; r < table.Rows.Count; r ++ )
132 {
133 for ( int i = 0 ; i < table.Columns.Count; i ++ )
134 {
135 objSheet.Cells[r + 2 , i + 1 ] = " ' " + table.Rows[r][i].ToString();
136 }
137 }
138 // worksheet.Columns.EntireColumn.AutoFit();
139 try
140 {
141 if (filename == "" )
142 {
143 ret = " Error:请传入导出后的文件名 " ;
144 }
145 string savePath = filepath + filename;
146 objBook.Saved = true ;
147 objBook.SaveCopyAs(savePath);
148 ret = " Success " ;
149 }
150 catch (Exception ex)
151 {
152 ret = " Error:导出文件时出错,文件可能正被打开!\n " + ex.Message;
153 }
154 finally
155 {
156 // 关闭
157 objExcel.Quit();
158 objBook = null ;
159 objExcel = null ;
160 GC.Collect(); // 强行销毁
161 }
162 return ret;
163 }
164 }
165 }
使用方法:
GetExcelSheetNameList
//
获取sheet表名
ArrayList sheetList = ExcelOperate._.GetExcelSheetNameList(filepath);
ArrayList sheetList = ExcelOperate._.GetExcelSheetNameList(filepath);
GetDataTableBySheetName
//
显示数据
GridView1.DataSource = ExcelOperate._.GetDataTableBySheetName(filepath, sheet);
this .DataBind();
GridView1.DataSource = ExcelOperate._.GetDataTableBySheetName(filepath, sheet);
this .DataBind();
ExportExcelByDataTable
1
//
数据源
2 DataTable dt = (DataTable)GridView1.DataSource;
3 // 文件名
4 string filename = " down " + DateTime.Now.ToString( " hhmmssfff " ) + " .xls " ;
5 // 保存地址
6 string filepath = Server.MapPath( " exceldown/ " );
7 // 生成
8 string ret = ExcelOperate._.ExportExcelByDataTable(filepath, filename, dt);
9 // 错误
10 if (ret.Contains( " Error " ))
11 {
12 Response.Write(ret);
13 return ;
14 }
15 // 下载
16 Response.Write( " <a href=\"/exceldown/ " + filename + " \"> " + filename + " </a> " );
2 DataTable dt = (DataTable)GridView1.DataSource;
3 // 文件名
4 string filename = " down " + DateTime.Now.ToString( " hhmmssfff " ) + " .xls " ;
5 // 保存地址
6 string filepath = Server.MapPath( " exceldown/ " );
7 // 生成
8 string ret = ExcelOperate._.ExportExcelByDataTable(filepath, filename, dt);
9 // 错误
10 if (ret.Contains( " Error " ))
11 {
12 Response.Write(ret);
13 return ;
14 }
15 // 下载
16 Response.Write( " <a href=\"/exceldown/ " + filename + " \"> " + filename + " </a> " );
ExportExcelByModel
1
protected
void
btnOut_Click(
object
sender, EventArgs e)
2 {
3 // 模板地址
4 string modelpath = Server.MapPath( " excelmodel " ) + " \\ " + " testmodel.xls " ;
5 // 生成地址
6 string newpath = Server.MapPath( " exceldown " ) + " \\ " +
7 DateTime.Now.ToString( " yyyyMMddhhmmssfff " ) + " .xls " ;
8 // 参数
9 ExcelOperate.ArrList al1 = new ExcelOperate.ArrList( " #Title " , " Excel导入,导出,模板生成-公共模块整理 " );
10 ExcelOperate.ArrList al2 = new ExcelOperate.ArrList( " #No " , " 1001 " );
11 ExcelOperate.ArrList al3 = new ExcelOperate.ArrList( " #User " , " tearer " );
12 ExcelOperate.ArrList al4 = new ExcelOperate.ArrList( " #Tel " , " 1234567890 " );
13 ExcelOperate.ArrList al5 = new ExcelOperate.ArrList( " #Date " , " 2010-04-27 " );
14 ExcelOperate.ArrList al6 = new ExcelOperate.ArrList( " #Addr " , " 上海市浦东新区 " );
15 // 生成
16 string ret = ExcelOperate._.ExportExcelByModel(modelpath, newpath, al1, al2, al3, al4, al5, al6, new ExcelOperate.ArrList( " #Operate " , " AmwITx " ));
17 // 错误
18 if (ret.Contains( " Error " ))
19 {
20 Response.Write(ret);
21 return ;
22 }
23 // 弹出
24 WriteExcel(newpath);
25 }
26
27 private void WriteExcel( string newpath)
28 {
29 FileInfo fi = new FileInfo(newpath);
30 // 打开保存对话框
31 Response.Clear();
32 Response.ClearHeaders();
33 Response.Buffer = false ;
34 Response.Charset = " UTF-8 " ;
35 Response.ContentType = " application/ms-excel " ;
36 Response.AppendHeader( " Content-Disposition " , " attachment;filename= " + Server.UrlEncode(fi.Name));
37 Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
38 Response.AppendHeader( " Content-Length " , fi.Length.ToString());
39 Response.Charset = "" ;
40 this .EnableViewState = false ;
41 Response.WriteFile(newpath);
42 // 删除创建的Excel文件
43 // FileInfo fileinf = new FileInfo(newpath);
44 // fileinf.Delete();
45 // 关闭连接
46 Response.Flush();
47 Response.End();
48 }
2 {
3 // 模板地址
4 string modelpath = Server.MapPath( " excelmodel " ) + " \\ " + " testmodel.xls " ;
5 // 生成地址
6 string newpath = Server.MapPath( " exceldown " ) + " \\ " +
7 DateTime.Now.ToString( " yyyyMMddhhmmssfff " ) + " .xls " ;
8 // 参数
9 ExcelOperate.ArrList al1 = new ExcelOperate.ArrList( " #Title " , " Excel导入,导出,模板生成-公共模块整理 " );
10 ExcelOperate.ArrList al2 = new ExcelOperate.ArrList( " #No " , " 1001 " );
11 ExcelOperate.ArrList al3 = new ExcelOperate.ArrList( " #User " , " tearer " );
12 ExcelOperate.ArrList al4 = new ExcelOperate.ArrList( " #Tel " , " 1234567890 " );
13 ExcelOperate.ArrList al5 = new ExcelOperate.ArrList( " #Date " , " 2010-04-27 " );
14 ExcelOperate.ArrList al6 = new ExcelOperate.ArrList( " #Addr " , " 上海市浦东新区 " );
15 // 生成
16 string ret = ExcelOperate._.ExportExcelByModel(modelpath, newpath, al1, al2, al3, al4, al5, al6, new ExcelOperate.ArrList( " #Operate " , " AmwITx " ));
17 // 错误
18 if (ret.Contains( " Error " ))
19 {
20 Response.Write(ret);
21 return ;
22 }
23 // 弹出
24 WriteExcel(newpath);
25 }
26
27 private void WriteExcel( string newpath)
28 {
29 FileInfo fi = new FileInfo(newpath);
30 // 打开保存对话框
31 Response.Clear();
32 Response.ClearHeaders();
33 Response.Buffer = false ;
34 Response.Charset = " UTF-8 " ;
35 Response.ContentType = " application/ms-excel " ;
36 Response.AppendHeader( " Content-Disposition " , " attachment;filename= " + Server.UrlEncode(fi.Name));
37 Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
38 Response.AppendHeader( " Content-Length " , fi.Length.ToString());
39 Response.Charset = "" ;
40 this .EnableViewState = false ;
41 Response.WriteFile(newpath);
42 // 删除创建的Excel文件
43 // FileInfo fileinf = new FileInfo(newpath);
44 // fileinf.Delete();
45 // 关闭连接
46 Response.Flush();
47 Response.End();
48 }
网上找了好多种一是不全,二是代码有错误,本人整理后,调试成功,功能全部可用。