[转]asp.net导出数据到Excel的三种方法
2008-04-03 08:45
916 查看
原文出处:asp.net导出数据到Excel的几种方法(1/3) 、asp.net导出数据到Excel的几种方法(2/3)、asp.net导出数据到Excel的几种方法(3/3)
asp.net导出到Excel也是个老生常谈的问题,在此归纳一下。
第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户端。这种方法生成的其实是个HTML文件,只不过Excel支持HTML格式,所以使用起来似乎和真正的Excel文件没什么两样,但它终究不是Excel格式,它不能当作数据源供其他程序调用。
这种实现起来比较简单,就不多述,请看代码。
public void ExportExcel( System.Web.UI.WebControls.WebControl objControl, string strFileName)
this.GridView1.DataBind();
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
object oMissing = System.Reflection.Missing.Value;
oExcel.Workbooks.Add(oMissing);
Excel.Workbook oBook = oExcel.Workbooks[1];
Excel.Worksheet oSheet = (Excel.Worksheet)oBook.Sheets[1];
oSheet.Name = this.Title;
Excel.Range rg;
for (int j = 0; j < this.GridView1.HeaderRow.Cells.Count; j++)
for(int i = 0;i<this.GridView1.Rows.Count;i++)
rg = null;
string VirFileName = Guid.NewGuid().ToString() + ".xls";
oBook.SaveAs(Server.MapPath(VirFileName), Excel.XlFileFormat.xlExcel9795, oMissing, oMissing, oMissing, oMissing, Excel.XlSaveAsAccessMode.xlExclusive,
oMissing, oMissing, oMissing, oMissing, oMissing);
oExcel.Workbooks.Close();
oExcel.Quit();
oSheet = null;
oBook = null;
oExcel = null;
GC.Collect();
Response.Redirect(VirFileName);
说明一下:为了Excel进程在使用完成后能彻底退出,需要将所有对象在使用完成后清空,像代码中的rg,oSheet,oBook,oExcel等。
第三种方法是利用OELDB数据访问对象操作Excel文件,达到将数据导出到Excel的目的,这种方法可能用的人不太多,缺点是必须有一个存在的Excel文件。优点是服务器不需要安装Excel,且生成的Excel是标准的Excel格式可以当作数据源使用。
准备工作:
1)先用准备一个Excel文件,这个Excel文件可以是空的,或是有一定格式的当做数据模板使用。
2)将操作的目录给ASP.NET用户(ASPNET 或NETWORK SERVICE)写入权限。
以下是示例:
说明一下:如果这个模板文件是个空文件,则需要使用Create Table创建一个工作表,否则只需使用已有的表进操作就可以了。
DataTable dt = new DataTable();
dt.Columns.Add("name");
dt.Columns.Add("age", typeof(int));
dt.Columns.Add("phone");
dt.Rows.Add("老张", 40,"99213812");
dt.Rows.Add("小李", 28,"a21313");
dt.Rows.Add("小王", 22,"2131434");
string FileName = Guid.NewGuid().ToString()+".xls";
string sNewFullFile = Server.MapPath(FileName);
try
{
File.Copy(Server.MapPath("format.xls"), sNewFullFile);
}
catch (Exception er)
{
Response.Write(er.Message);
return;
}
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=" + sNewFullFile + ";Extended Properties=Excel 8.0;";
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
OleDbCommand cmd = null;
bool bRet = false;
try
{
conn.Open();
cmd = new OleDbCommand("create table [sheet4]([姓名] Text,[年龄] int,[电话] Text)",conn);
cmd.ExecuteNonQuery();
string strSQL = "INSERT INTO [Sheet4$] ([姓名], [年龄],[电话]) VALUES (?, ?, ?)";
cmd = new OleDbCommand(strSQL, conn);
for (int i = 0; i < 3; i++)
{
cmd.Parameters.Add(i.ToString(), OleDbType.VarChar);
}
DataView dv = dt.DefaultView;
foreach (DataRowView row in dv)
{
cmd.Parameters[0].Value = row["name"].ToString();
cmd.Parameters[1].Value =(int) row["age"];
cmd.Parameters[2].Value = row["phone"].ToString();
cmd.ExecuteNonQuery();
}
bRet = true;
}
catch (Exception er)
{
Response.Write(er.Message);
}
finally
{
if (cmd != null)
{
cmd.Dispose();
}
conn.Dispose();
}
if(bRet)
Response.Redirect(FileName);
asp.net导出到Excel也是个老生常谈的问题,在此归纳一下。
第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户端。这种方法生成的其实是个HTML文件,只不过Excel支持HTML格式,所以使用起来似乎和真正的Excel文件没什么两样,但它终究不是Excel格式,它不能当作数据源供其他程序调用。
这种实现起来比较简单,就不多述,请看代码。
public void ExportExcel( System.Web.UI.WebControls.WebControl objControl, string strFileName)
this.GridView1.DataBind();
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
object oMissing = System.Reflection.Missing.Value;
oExcel.Workbooks.Add(oMissing);
Excel.Workbook oBook = oExcel.Workbooks[1];
Excel.Worksheet oSheet = (Excel.Worksheet)oBook.Sheets[1];
oSheet.Name = this.Title;
Excel.Range rg;
for (int j = 0; j < this.GridView1.HeaderRow.Cells.Count; j++)
for(int i = 0;i<this.GridView1.Rows.Count;i++)
rg = null;
string VirFileName = Guid.NewGuid().ToString() + ".xls";
oBook.SaveAs(Server.MapPath(VirFileName), Excel.XlFileFormat.xlExcel9795, oMissing, oMissing, oMissing, oMissing, Excel.XlSaveAsAccessMode.xlExclusive,
oMissing, oMissing, oMissing, oMissing, oMissing);
oExcel.Workbooks.Close();
oExcel.Quit();
oSheet = null;
oBook = null;
oExcel = null;
GC.Collect();
Response.Redirect(VirFileName);
说明一下:为了Excel进程在使用完成后能彻底退出,需要将所有对象在使用完成后清空,像代码中的rg,oSheet,oBook,oExcel等。
第三种方法是利用OELDB数据访问对象操作Excel文件,达到将数据导出到Excel的目的,这种方法可能用的人不太多,缺点是必须有一个存在的Excel文件。优点是服务器不需要安装Excel,且生成的Excel是标准的Excel格式可以当作数据源使用。
准备工作:
1)先用准备一个Excel文件,这个Excel文件可以是空的,或是有一定格式的当做数据模板使用。
2)将操作的目录给ASP.NET用户(ASPNET 或NETWORK SERVICE)写入权限。
以下是示例:
说明一下:如果这个模板文件是个空文件,则需要使用Create Table创建一个工作表,否则只需使用已有的表进操作就可以了。
DataTable dt = new DataTable();
dt.Columns.Add("name");
dt.Columns.Add("age", typeof(int));
dt.Columns.Add("phone");
dt.Rows.Add("老张", 40,"99213812");
dt.Rows.Add("小李", 28,"a21313");
dt.Rows.Add("小王", 22,"2131434");
string FileName = Guid.NewGuid().ToString()+".xls";
string sNewFullFile = Server.MapPath(FileName);
try
{
File.Copy(Server.MapPath("format.xls"), sNewFullFile);
}
catch (Exception er)
{
Response.Write(er.Message);
return;
}
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=" + sNewFullFile + ";Extended Properties=Excel 8.0;";
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
OleDbCommand cmd = null;
bool bRet = false;
try
{
conn.Open();
cmd = new OleDbCommand("create table [sheet4]([姓名] Text,[年龄] int,[电话] Text)",conn);
cmd.ExecuteNonQuery();
string strSQL = "INSERT INTO [Sheet4$] ([姓名], [年龄],[电话]) VALUES (?, ?, ?)";
cmd = new OleDbCommand(strSQL, conn);
for (int i = 0; i < 3; i++)
{
cmd.Parameters.Add(i.ToString(), OleDbType.VarChar);
}
DataView dv = dt.DefaultView;
foreach (DataRowView row in dv)
{
cmd.Parameters[0].Value = row["name"].ToString();
cmd.Parameters[1].Value =(int) row["age"];
cmd.Parameters[2].Value = row["phone"].ToString();
cmd.ExecuteNonQuery();
}
bRet = true;
}
catch (Exception er)
{
Response.Write(er.Message);
}
finally
{
if (cmd != null)
{
cmd.Dispose();
}
conn.Dispose();
}
if(bRet)
Response.Redirect(FileName);
相关文章推荐
- asp.net导出数据到Excel的三种方法
- asp.net导出数据到Excel的三种方法
- asp.net导出数据到Excel的三种方法
- 【转】asp.net导出数据到Excel的三种方法
- asp.net导出数据到Excel的三种方法
- [转]asp.net导出数据到Excel的三种方法
- Asp.net 导出Excel文件的三种方法
- asp.net 将DataTable中的数据导出到Excel并下载方法
- Asp.net导出Excel/Csv文本格式数据的方法
- asp.net 将DataTable中的数据导出到Excel并下载方法
- asp.net实现Gradview绑定数据库数据并导出Excel的方法
- ASP.NET Export to Excel(导出数据到Excel) & C#导出Excel,某单元格内容长度超过255的处理方法
- Asp.net导出Excel/Csv文本格式数据的方法
- asp.net导出数据到Excel的几种方法(1/3)
- asp.net导出EXCEL的好方法!(好用,导出全部数据)
- ASP.NET导出数据到Excel的实现方法
- ASP.NET导出数据到Excel的实现方法
- asp.net导出数据到Excel的几种方法(3/3)
- asp.net导出excel数据的常见方法汇总