热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

asp.net如何将excel导入数据库

asp.net如何将excel导入数据库分类:IT技术2008.4.214:25作者:smartrain|评论:0|阅读:01、Excel

asp.net 如何将excel导入数据库

分类:IT技术

2008.4.214:25 作者:smartrain |评论:0 | 阅读:0

1、Excel数据导入到数据库中:

//该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,sheetname为表示那个Excel表;
        public DataSet ExcelDataSource( string filepath , string sheetname )
        
...{
            
string strConn;
            strConn 
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  filepath   ";Extended Properties=Excel 8.0;";
            OleDbConnection conn 
= new OleDbConnection(strConn);
            OleDbDataAdapter oada 
= new OleDbDataAdapter ( "select * from ["  sheetname  "$]", strConn );
            DataSet ds 
= new DataSet ();
            oada.Fill ( ds );
            
return ds ;
        }

上面的代码实现了将Excel中的数据写进DataSet中,实现了这一步后,你可以按照自己的需要对获得DataSet进行处理,需要注意的一个问题是,你必须要指定sheetname,即Excel中的哪一个工作单需要导入,否则会出现错误。

2、如何从Excel中获得工作单(sheetname):

//获得Excel中的所有sheetname。
public ArrayList ExcelSheetName ( string filepath )
...{
    ArrayList al 
= new ArrayList ();
    
string strConn;
    strConn 
= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  filepath   ";Extended Properties=Excel 8.0;";
    OleDbConnection conn 
= new OleDbConnection(strConn);
    conn.Open ();
    DataTable sheetNames 
= conn.GetOleDbSchemaTable
    (System.Data.OleDb.OleDbSchemaGuid.Tables,
new object[]...{null,null,null,"TABLE"});
    conn.Close ();
    
foreach ( DataRow dr in sheetNames.Rows )
    
...{
        al.Add ( dr[
2] );
    }

    
return al;
}

通过这两步,就基本可以实现将Excel导入到数据库中了,具体实现中的细节问题,你可以自己在实践中获得。

3、将数据库中的数据导入Excel中,在这里我讲叙自己实践中的两个方法:

方法一:从最基本的写文件入手,将从数据库中读出来的数据写入到Excel中;

//该方法实现将数据导入到Excel文件中,其中的DataTable dt就是你需要将数据写入到Excel中的数据;
public void ExportExcel( DataTable dt , StreamWriter w )
...{
    
try
    
...{
        
forint i &#61; 0 ; i < dt.Columns.Count ; i  )
        
...{
            w.Write ( dt.Columns[i] );
            w.Write( 
&#39;&#39; );
        }

        w.Write ( 
"" );

        
object[] values &#61; new object [dt.Columns.Count];
        
foreach ( DataRow dr in dt.Rows )
        
...{
            values 
&#61; dr.ItemArray ;
            
for ( int i &#61; 0 ; i < dt.Columns.Count ; i )
            
...{
                w.Write ( values[i] );
                w.Write ( 
&#39;&#39; );
            }

            w.Write ( 
"" );
        }

        w.Flush();
        w.Close();
    }

    
catch
    
...{
        w.Close();
    }

}

StreamWriter w就是你自己创建的一个流&#xff0c;创建该数据流时&#xff0c;你需要自己指定需要将数据写入到那个文件&#xff0c;即指定文件路径&#xff0c;要实现下载的话&#xff0c;就可以简单的用Response.Redirect ( "指定需要被下载的文件路径" );

方法二&#xff1a;该方法实现的是将数据从DataGrid中导入到Excel中&#xff1a;

//filename为Excel的名字&#xff0c;ToExcelGrid就是数据源&#xff0c;在此为DataGrid数据源&#xff1b;
private void ExportExcelFromDataGrid( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
...{
    Response.Clear();
    Response.Buffer
&#61;   true;     
    Response.Charset
&#61;"utf-8";           
    Response.AppendHeader(
"Content-Disposition","attachment;filename&#61;"Server.UrlEncode ( filename ) );     
    Response.ContentEncoding
&#61;System.Text.Encoding.GetEncoding("utf-8");//设置输出流为简体中文   
    Response.ContentType   &#61;   "application/ms-excel";//设置输出文件类型为excel文件。     
    this.EnableViewState   &#61;   false;           
    System.Globalization.CultureInfo   myCItrad   
&#61;   new   System.Globalization.CultureInfo("ZH-CN",true);   
    System.IO.StringWriter   oStringWriter   
&#61;   new   System.IO.StringWriter(myCItrad);     
    System.Web.UI.HtmlTextWriter   oHtmlTextWriter   
&#61;   new   System.Web.UI.HtmlTextWriter(oStringWriter);   
    ToExcelGrid.RenderControl(oHtmlTextWriter);     
    Response.Write(oStringWriter.ToString());   
    Response.End();
}

用该方法的时候&#xff0c;需要注意将DataGrid数据源中的允许翻页&#xff0c;允许排序设置成"false"&#xff0c;同时一些特殊行进行需要将其设置成不可视&#xff0c;如编辑行等&#xff0c;若不这样的话&#xff0c;用该方法实现的数据导入到Excel&#xff0c;会出现异常“需要将XXX放入到一个具有runat&#61;server的form窗体中”&#xff0c;我具体忘了XXX代表的意思&#xff0c;你可以在实践中尝试一下&#xff0c;就可以知道出现的错误。

 

这篇文章放在这里是为了用到的时候省的找了,别无他意.

需要说明的是excel文档必须先上传到服务器才能进行操作.


你可以通过这个链接引用该篇文章:http://smartrain.bokee.com/viewdiary.26169194.html

 


推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
author-avatar
手机用户2502913375
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有