本篇文章主要介绍了"在asp.net用c#建立动态excel表",对于.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
在asp.net中用c#建立本地的excel表,并由服务器向外传播是很容易实现的,而删除掉嵌入的excel.exe进程是困难的。所以 你不要打开任务管理器 ,看excel.exe进程相关的东西是否还在内存里面。这里提供了两个解决方法 :
第一个方法:"createexcelworkbook"(建立excel工作簿) 这个方法 运行一个存储过程 ,返回一个datareader 并根据datareader 来生成一个excel工作簿 ,并保存到文件系统中,创建一个“download”连接,这样 用户就可以将excel表导入到浏览器中也可以直接下载到机器上。
第二个方法:generatecsvreport 本质上是做同样的一件事情,仅仅是保存的文件的csv格式 。仍然 导入到excel中,csv代码能解决一个开发中的普片的问题:你有一列 里面倒入了多个零,csv代码能保证零不变空 。(说明: 就是在excel表中多个零的值 不能保存的问题)
在可以下载的解决方案中,包含一个有效的类 ” spgen” 能运行存储过程并返回datareader ,一个移除文件的方法 能删除早先于一个特定的时间值。下面出现的主要的方法就是createexcelworkbook
注意:你必须知道 在运行这个页面的时候,你可能需要能在websever 服务器的文件系统中写 excel,csv文件的管理员的权限。处理这个问题的最简单的方法就是运行这个页面在自己的文件夹里面并包括自己的配置文件。并在配置文件中添加下面的元素
特别注意 下面的代码块的作用是清除excel的对象。
// need all following code to clean up and extingush all references!!!
owb.close(null,null,null);
oxl.workbooks.close();
oxl.quit();
system.runtime.interopservices.marshal.releasecomobject (orng);
system.runtime.interopservices.marshal.releasecomobject (oxl);
system.runtime.interopservices.marshal.releasecomobject (osheet);
system.runtime.interopservices.marshal.releasecomobject (owb);
osheet=null;
owb=null;
oxl = null;
gc.collect(); // force final cleanup!
这是必须的 ,因为osheet", "owb" , 'orng", 等等 对象也是com的实例,我们需要
marshal类的releasecomobject的方法把它们从.net去掉
private void createexcelworkbook(string spname, sqlparameter[] parms)
{
string strcurrentdir = server.mappath(".") + "\\";
removefiles(strcurrentdir); // utility method to clean up old files
excel.application oxl;
excel._workbook owb;
excel._worksheet osheet;
excel.range orng;
try
{
gc.collect();// clean up any other excel guys hangin' around...
oxl = new excel.application();
oxl.visible = false;
//get a new workbook.
owb = (excel._workbook)(oxl.workbooks.add( missing.value ));
osheet = (excel._worksheet)owb.activesheet;
//get our data
string strconnect = system.configuration.configurationsettings.appsettings["connectstring"];
spgen sg = new spgen(strconnect,spname,parms);
sqldatareader myreader = sg.runreader();
// create header and sheet...
int irow =2;
for(int j=0;j<>
{
osheet.cells[1, j+1] = myreader.getname(j).tostring();
}
// build the sheet contents
while (myreader.read())
{
for(int k=0;k < myreader.fieldcount;k++)
{
osheet.cells[irow,k+1]= myreader.getvalue(k).tostring();
}
irow++;
}// end while
myreader.close();
myreader=null;
//format a1:z1 as bold, vertical alignment = center.
osheet.get_range("a1", "z1").font.bold = true;
osheet.get_range("a1", "z1").verticalalignment =excel.xlvalign.xlvaligncenter;
//autofit columns a:z.
orng = osheet.get_range("a1", "z1");
orng.entirecolumn.autofit();
oxl.visible = false;
oxl.usercontrol = false;
string strfile ="report" + system.datetime.now.ticks.tostring() +".xls";
owb.saveas( strcurrentdir + strfile,excel.xlfileformat.xlworkbooknormal,
null,null,false,false,excel.xlsaveasaccessmode.xlshared,false,false,null,null,null);
// need all following code to clean up and extingush all references!!!
owb.close(null,null,null);
oxl.workbooks.close();
oxl.quit();
system.runtime.interopservices.marshal.releasecomobject (orng);
system.runtime.interopservices.marshal.releasecomobject (oxl);
system.runtime.interopservices.marshal.releasecomobject (osheet);
system.runtime.interopservices.marshal.releasecomobject (owb);
osheet=null;
owb=null;
oxl = null;
gc.collect(); // force final cleanup!
string strmachinename = request.servervariables["server_name"];
errlabel.text="download report";
}
catch( exception theexception )
{
string errormessage;
errormessage = "error: ";
errormessage = string.concat( errormessage, theexception.message );
errormessage = string.concat( errormessage, " line: " );
errormessage = string.concat( errormessage, theexception.source );
errlabel.text= errormessage ;
}
}
以上就介绍了在asp.net用c#建立动态excel表,包括了方面的内容,希望对.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_292.html