這幾天在寫一個將outlook匯出的csv檔,要批次把通訊錄的資料寫到資料庫中

但發現用下列的oledbconnection來做連接讀取的話,就不會有被截斷的問題!還不錯用。

不過這個要把這一段放在aspx前端網頁中的cs,才有用喔,放在類別檔的cs是無效的,要自己再動點手腳,因為我是直接使用FileUpload這個上傳元件,所以要放在aspx前端網頁。

使用下列程式碼,就可以將csv檔寫到DataTable,並回傳去做後讀的處理,還蠻不錯用的。

以下程式碼大部份是我的同事george協助提供,我再把oledb那段換掉,本來是讀excel的,我換成讀csv

 

private void ProcessTransData()

{

 string f = this.CsvUpload.FileName;
 FileInfo fi = new FileInfo(f);
 string name = CsvUpload.FileName;
 string savePath = @"~\public\" + name;
  //將檔案先上傳到server上
 CsvUpload.SaveAs(Server.MapPath(savePath));
 DataTable dt = this.GetCSVData(@"~\public\", fi.Name);

}


public DataTable GetCSVData(string savePath, string sheetname)
{
 System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Text;'", Server.MapPath(savePath)));
 System.Data.OleDb.OleDbDataAdapter adt = new System.Data.OleDb.OleDbDataAdapter("select * from [" + sheetname + "]", conn);
 DataSet ds = new DataSet();
 adt.Fill(ds);
 DataTable dt = ds.Tables[0];
 return dt;
}

丫德 發表在 痞客邦 PIXNET 留言(0) 人氣()