日期:2014-05-18  浏览次数:20593 次

100分送上:DataTable导入Excel问题
问题关键:
1:服务器端不需要安装EXCEl
2:要分多个Sheet导入

之前我用Excel.Application实现,但是这个需要服务器端安装Excel

各位高手又没有别的好的方法
立即送分


------解决方案--------------------
有轻量级的组件包,可以不用安装EXCEL,网络上去搜一搜
------解决方案--------------------
直接将查询出来的结果dataTable导出
------解决方案--------------------
1.准备一个空的excel文件,当成模板用,里面有多个sheet或相关字段.
2.将模板copy到一个新文件(导入目的文件)
3.用oledb连接该文件(注意权限)
4.用insert 语句即可.(如果1步没有相关字段,还可以调用create table创建表)

------解决方案--------------------
组件包或许可以
------解决方案--------------------
不装Excel的没用过
------解决方案--------------------
要分多个Sheet导入 
那就需要组建支持了。
------解决方案--------------------
探讨
1.准备一个空的excel文件,当成模板用,里面有多个sheet或相关字段.
2.将模板copy到一个新文件(导入目的文件)
3.用oledb连接该文件(注意权限)
4.用insert 语句即可.(如果1步没有相关字段,还可以调用create table创建表)

------解决方案--------------------
这个组件挺好用的。网上搜搜找个破解就可以了。
http://www.smartxls.com

------解决方案--------------------
直接导出的格式还不是可以设定,我写了个封装方法,边框的宽度,底色什么的都是自定义的
------解决方案--------------------
C# code
asp.net里导出excel表方法汇总  
 2006-5-23  
 
 1、由dataset生成 

public void CreateExcel(DataSet ds,string typeid,string FileName)  
   { 
   HttpResponse resp; 
   resp = Page.Response; 
   resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 
   resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);    
   string colHeaders= "", ls_item=""; 
   int i=0; 

   //定义表对象与行对像,同时用DataSet对其值进行初始化 
   DataTable dt=ds.Tables[0]; 
   DataRow[] myRow=dt.Select("");  
   // typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件 
   if(typeid=="1") 
    { 
    //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
    for(i=0;i     colHeaders+=dt.Columns[i].Caption.ToString()+"\t"; 
    colHeaders +=dt.Columns[i].Caption.ToString() +"\n";    
    //向HTTP输出流中写入取得的数据信息 
    resp.Write(colHeaders);  
    //逐行处理数据   
    foreach(DataRow row in myRow) 
     { 
     //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n 
     for(i=0;i      ls_item +=row[i].ToString() + "\t";      
     ls_item += row[i].ToString() +"\n"; 
     //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据     
     resp.Write(ls_item); 
     ls_item=""; 
    } 
   } 
   else 
    { 
    if(typeid=="2") 
     {  
     //从DataSet中直接导出XML数据并且写到HTTP输出流中 
     resp.Write(ds.GetXml()); 
    }     
   } 
   //写缓冲区中的数据到HTTP头文件中 
   resp.End(); 


  } 


2、由datagrid生成 

public void ToExcel(System.Web.UI.Control ctl)   
   { 
   HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls"); 
   HttpContext.Current.Response.Charset ="UTF-8";     
   HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; 
   HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 
   ctl.Page.EnableViewState =false;    
   System.IO.StringWriter  tw = new System.IO.StringWriter() ; 
   System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); 
   ctl.RenderControl(hw); 
   HttpContext.Current.Response.Write(tw.ToString()); 
   HttpContext.Current.Response.End(); 
  } 

用法:ToExcel(datagrid1); 



3、这个用dataview 

public void OutputExcel(DataView dv,string str) 
{ 
   // 
   // TODO: 在此处添加构造函数逻辑 
   // 
                           //dv为要输出到Excel的数据,str为标题名称 
   GC.Collect(); 
   Application excel;// = new Application(); 
   int rowIndex=4; 
   int colIndex=1; 

   _Workbook xBk; 
   _Worksheet xSt; 

   e