ASP.NET Excel匯入和匯出
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 ada = 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
...{
for( int i = 0 ; i < dt.Columns.Count ; i ++ )
...{
w.Write ( dt.Columns[i] );
w.Write( ' ' );
}
w.Write ( " " );
object[] values = new object [dt.Columns.Count];
foreach ( DataRow dr in dt.Rows )
...{
values = dr.ItemArray ;
for ( int i = 0 ; i < dt.Columns.Count ; i++ )
...{
w.Write ( values[i] );
w.Write ( ' ' );
}
w.Write ( " " );
}
w.Flush();
w.Close();
}
catch
...{
w.Close();
}
}
StreamWriter w就是你自己建立的一個流,建立該資料流時,你需要自己指定需要將資料寫入到那個檔案,即指定檔案路徑,要實現下載的話,就可以簡單的用Response.Redirect ( "指定需要被下載的檔案路徑" );
方法二:該方法實現的是將資料從DataGrid中匯入到Excel中:
//filename為Excel的名字,ToExcelGrid就是資料來源,在此為DataGrid資料來源;
private void ExportExcelFromDataGrid( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
...{
Response.Clear();
Response.Buffer= true;
Response.Charset="utf-8";
Response.AppendHeader("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );
Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");//設定輸出流為簡體中文
Response.ContentType = "application/ms-excel";//設定輸出檔案型別為excel檔案。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
ToExcelGrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
用該方法的時候,需要注意將DataGrid資料來源中的允許翻頁,允許排 序設定成"false",同時一些特殊行進行需要將其設定成不可視,如編輯行等,若不這樣的話,用該方法實現的資料匯入到Excel,會出現異常“需要將 XXX放入到一個具有runat=server的form窗體中”,我具體忘了XXX代表的意思,你可以在實踐中嘗試一下,就可以知道出現的錯誤。
3. .Net中匯入Excel資料時應注意的事
從Excel向資料庫導資料的時候,最常用的方式是使用Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:"Demo.xls; Extended Properties='Excel 8.0;HDR=YES;IMEX=1'。 但 是當一列中既有數字,又有文字的時候,總是莫名其妙的出現部分資料讀不到的現象,有時是讀不到文字資料,有時是讀不到數字資料。這是為什麼呢?原來 OleDb會智慧的根據前8行的資料判斷Excel的列型別,當文字資料的行數 > 數字資料的行數時,列型別被設為文字,否則為數字。那我想讀到全部的資料該做些什麼呢?這位同學問得好,祕密就在於IMEX=1,以匯入模式讀取資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-677813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kxcel, 方便匯入和匯出 ExcelExcel
- NPOI匯出和匯入Excel,Word和PDFExcel
- 如何使用 JavaScript 匯入和匯出 ExcelJavaScriptExcel
- vue excel匯入匯出VueExcel
- 前端實現Excel匯入和匯出功能前端Excel
- Angular Excel 匯入與匯出AngularExcel
- 如何使用JavaScript匯入和匯出Excel檔案JavaScriptExcel
- vue + element + 匯入、匯出excel表格VueExcel
- Vue框架下實現匯入匯出Excel、匯出PDFVue框架Excel
- EasyPoi, Excel資料的匯入匯出Excel
- Vue + Element 實現匯入匯出ExcelVueExcel
- ASP.NET 開源匯入匯出庫Magicodes.IE 完成Csv匯入匯出ASP.NET
- 原生PHP網頁匯出和匯入excel檔案例項PHP網頁Excel
- 基於EPPlus和NPOI實現的Excel匯入匯出Excel
- ASP.NET MVC 匯入Excel檔案ASP.NETMVCExcel
- Java之POI操作Excel表-匯入匯出JavaExcel
- 基於 PhpSpreadsheet 簡單 Excel 匯入匯出PHPExcel
- 關於java中Excel的匯入匯出JavaExcel
- EasyExcel完成excel檔案的匯入匯出Excel
- excel的匯入與匯出---通用版Excel
- php讀取excel檔案資料的匯入和匯出PHPExcel
- spring boot + easypoi快速實現excel匯入匯出Spring BootExcel
- 一個通用的匯入匯出excel的思路Excel
- Laravel Maatwebsite-Excel 3.1 實現匯出匯入LaravelWebExcel
- Vue+Element 實現excel的匯入匯出VueExcel
- java使使用者EasyExcel匯入匯出excelJavaExcel
- 匯出excelExcel
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- Excel匯入匯出神器(Java)ExcelJava
- spring boot + jdk1.8實現Excel匯入、匯出Spring BootJDKExcel
- MATLAB匯入txt和excel檔案技巧彙總:批量匯入、單個匯入MatlabExcel
- java匯出Excel定義匯出模板JavaExcel
- Excel模板匯出之動態匯出Excel
- MySQL入門--匯出和匯入資料MySql
- Java匯出ExcelJavaExcel
- Vue匯出ExcelVueExcel
- PHP 匯出 ExcelPHPExcel
- PHP匯出EXCELPHPExcel
- excel匯入工具Excel