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导入到数据库中了,具体实现中的细节问题,你可以自己在实践中获得。
3、将数据库中的数据导入Excel中,在这里我讲叙自己实践中的两个方法:
方法一:从最基本的写文件入手,将从数据库中读出来的数据写入到Excel中;
//该方法实现将数据导入到Excel文件中&#xff0c;其中的DataTable dt就是你需要将数据写入到Excel中的数据&#xff1b; public void ExportExcel( DataTable dt , StreamWriter w ) ...{ try ...{ for( int 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