蒙在股里 发表于 2015-1-16 23:38:54

ASP编程:Asp.Net下导出/导进划定规矩的Excel(.xls)文...

asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般asp.net|excelDataTable中的数据导出Excel文件
///<summary>
///将DataTable中的数据导出到指定的Excel文件中
///</summary>
///<paramname="page">Web页面临象</param>
///<paramname="tab">包括被导出数据的DataTable工具</param>
///<paramname="FileName">Excel文件的称号</param>
publicstaticvoidExport(System.Web.UI.Pagepage,System.Data.DataTabletab,stringFileName)
{
System.Web.HttpResponsehttpResponse=page.Response;
System.Web.UI.WebControls.DataGriddataGrid=newSystem.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.StringWritertw=newSystem.IO.StringWriter();
System.Web.UI.HtmlTextWriterhw=newSystem.Web.UI.HtmlTextWriter(tw);
dataGrid.RenderControl(hw);

stringfilePath=page.Server.MapPath("..")+"Files"+FileName;
System.IO.StreamWritersw=System.IO.File.CreateText(filePath);
sw.Write(tw.ToString());
sw.Close();

DownFile(httpResponse,FileName,filePath);

httpResponse.End();
}
privatestaticboolDownFile(System.Web.HttpResponseResponse,stringfileName,stringfullPath)
{
try
{
Response.ContentType="application/octet-stream";

Response.AppendHeader("Content-Disposition","attachment;filename="+
HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)+";charset=GB2312");
System.IO.FileStreamfs=System.IO.File.OpenRead(fullPath);
longfLen=fs.Length;
intsize=102400;//每100K同时下载数据
byte[]readData=newbyte;//指定缓冲区的巨细
if(size>fLen)size=Convert.ToInt32(fLen);
longfPos=0;
boolisEnd=false;
while(!isEnd)
{
if((fPos+size)>fLen)
{
size=Convert.ToInt32(fLen-fPos);
readData=newbyte;
isEnd=true;
}
fs.Read(readData,0,size);//读进一个紧缩块
Response.BinaryWrite(readData);
fPos+=size;
}
fs.Close();
System.IO.File.Delete(fullPath);
returntrue;
}
catch
{
returnfalse;
}
}

将指定Excel文件中的数据转换成DataTable
///<summary>
///将指定Excel文件中的数据转换成DataTable工具,供给用程序进一步处置
///</summary>
///<paramname="filePath"></param>
///<returns></returns>
publicstaticSystem.Data.DataTableImport(stringfilePath)
{
System.Data.DataTablers=newSystem.Data.DataTable();
boolcanOpen=false;

OleDbConnectionconn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"DataSource="+filePath+";"+
"ExtendedProperties="Excel8.0;"");

try//实验数据毗连是不是可用
{
conn.Open();
conn.Close();
canOpen=true;
}
catch{}

if(canOpen)
{
try//假如数据毗连能够翻开则实验读进数据
{
OleDbCommandmyOleDbCommand=newOleDbCommand("SELECT*FROM",conn);
OleDbDataAdaptermyData=newOleDbDataAdapter(myOleDbCommand);
myData.Fill(rs);
conn.Close();
}
catch//假如数据毗连能够翻开可是读进数据失利,则从文件中提掏出事情表的称号,再读进数据
{
stringsheetName=GetSheetName(filePath);
if(sheetName.Length>0)
{
OleDbCommandmyOleDbCommand=newOleDbCommand("SELECT*FROM["+sheetName+"$]",conn);
OleDbDataAdaptermyData=newOleDbDataAdapter(myOleDbCommand);
myData.Fill(rs);
conn.Close();
}
}
}
else
{
System.IO.StreamReadertmpStream=File.OpenText(filePath);
stringtmpStr=tmpStream.ReadToEnd();
tmpStream.Close();
rs=GetDataTableFromString(tmpStr);
tmpStr=&qu</p>使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。

分手快乐 发表于 2015-1-18 17:52:59

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

小女巫 发表于 2015-1-22 19:16:39

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

精灵巫婆 发表于 2015-1-25 20:22:00

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

山那边是海 发表于 2015-2-3 20:08:23

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

金色的骷髅 发表于 2015-2-9 04:40:15

我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。

活着的死人 发表于 2015-2-26 22:49:02

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

愤怒的大鸟 发表于 2015-3-8 18:22:23

我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。

变相怪杰 发表于 2015-3-16 10:02:16

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

蒙在股里 发表于 2015-3-22 22:10:25

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
页: [1]
查看完整版本: ASP编程:Asp.Net下导出/导进划定规矩的Excel(.xls)文...