您的位置:首页 > 编程语言 > ASP

Asp.Net下导出/导入规则的Excel(.xls)文件

2008-08-09 22:04 531 查看
Asp.Net下导出/导入规则的Excel(.xls)文件。 DataTable中的数据导出Excel文件

/// <summary>

/// 将DataTable中的数据导出到指定的Excel文件中

/// </summary>

/// <param name="page">Web页面对象</param>

/// <param name="tab">包含被导出数据的DataTable对象</param>

/// <param name="FileName">Excel文件的名称</param>

public static void Export(System.Web.UI.Page page,System.Data.DataTable tab,string FileName)

{

System.Web.HttpResponse httpResponse = page.Response;

System.Web.UI.WebControls.DataGrid dataGrid=new System.Web.UI.WebControls.DataGrid();

dataGrid.DataSource=tab.DefaultView;

dataGrid.AllowPaging = false;

dataGrid.HeaderStyle.BackColor = System.Drawing.Color.Green;

dataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;

dataGrid.HeaderStyle.Font.Bold = true;

dataGrid.DataBind();

httpResponse.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)); //filename="*.xls";

httpResponse.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");

httpResponse.ContentType ="application/ms-Excel";

System.IO.StringWriter tw = new System.IO.StringWriter() ;

System.Web.UI.HTMLTextWriter hw = new System.Web.UI.HTMLTextWriter (tw);

dataGrid.RenderControl(hw);

string filePath = page.Server.MapPath("..")+"\\Files\\" +FileName;

System.IO.StreamWriter sw = System.IO.File.CreateText(filePath);

sw.Write(tw.ToString());

sw.Close();

DownFile(httpResponse,FileName,filePath);

httpResponse.End();

}

private static bool DownFile(System.Web.HttpResponse Response,string fileName,string fullPath)

{

try

{

Response.ContentType = "application/octet-stream";

Response.AppendHeader("Content-Disposition","attachment;filename=" +

HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312");

System.IO.FileStream fs= System.IO.File.OpenRead(fullPath);

long fLen=fs.Length;

int size=102400;//每100K同时下载数据

byte[] readData = new byte[size];//指定缓冲区的大小

if(size>fLen)size=Convert.ToInt32(fLen);

long fPos=0;

bool isEnd=false;

while (!isEnd)

{

if((fPos+size)>fLen)

{

size=Convert.ToInt32(fLen-fPos);

readData = new byte[size];

isEnd=true;

}

fs.Read(readData, 0, size);//读入一个压缩块

Response.BinaryWrite(readData);

fPos+=size;

}

fs.Close();

System.IO.File.Delete(fullPath);

return true;

}

catch

{

return false;

}

}

将指定Excel文件中的数据转换成DataTable

/// <summary>

/// 将指定Excel文件中的数据转换成DataTable对象,供应用程序进一步处理

/// </summary>

/// <param name="filePath"></param>

/// <returns></returns>

public static System.Data.DataTable Import(string filePath)

{

System.Data.DataTable rs = new System.Data.DataTable();

bool canOpen=false;

OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+

"Data Source=" + filePath + ";" +

"Extended Properties=\"Excel
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: