利用OleDb讀取csv檔 字串問題
如果同一個資料欄位存在數字和字串的話,使用這個方法預設會判定為數值,因此字串的資料就會消失不見,因此必須動態加入.ini,但是個人認為除非上傳的檔案都是同樣的相同的檔名就
可以這樣用,不然的話多人同時存取的時候可能會有lock的問題存在。
下面第二種方法使用資料流來讀取資料就沒有會將字串判定為數值的事情發生了
參考網址:http://mobile.dotblogs.com.tw/yilinliu/archive/09/23/5452.aspx
可以這樣用,不然的話多人同時存取的時候可能會有lock的問題存在。
下面第二種方法使用資料流來讀取資料就沒有會將字串判定為數值的事情發生了
string strPath = Server.MapPath("~\\Upload\\"); string strName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".csv"; File1.PostedFile.SaveAs(strPath + strName); string mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties=text"; OleDbConnection objConn = new OleDbConnection(mystring); OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [" + strName + "]", objConn); DataSet myDs = new DataSet(); myDa.Fill(myDs); objConn.Close(); DataGrid1.DataSource = myDs.Tables[0]; DataGrid1.DataBind(); //使用方法一讀檔 for (int i = 0; i < myDs.Tables[0].Rows.Count; i++) { Response.Write("No" + i + ". " + myDs.Tables[0].Rows[i][0].ToString()); } //使用方法二讀檔 FileStream infile = File.Open(strPath + strName, FileMode.Open, FileAccess.Read, FileShare.Read); StreamReader myStreamReader = new StreamReader(infile, System.Text.Encoding.Default); string[] myStringArray; if (myStreamReader.Peek() != -1) myStreamReader.ReadLine(); int intCount = 0; while (myStreamReader.Peek() != -1) { myStringArray = myStreamReader.ReadLine().Split(','); if (myStringArray[0] != "") { Response.Write("No" + intCount + ". " + myStringArray[0].ToString()); } intCount++; } myStreamReader.Close(); myStreamReader.Dispose(); infile.Close();
參考網址:http://mobile.dotblogs.com.tw/yilinliu/archive/09/23/5452.aspx
留言
張貼留言
您好,我是 Lawrence,這裡是我的開發筆記的網誌,如果你對我的文章有任何疑問或者有錯誤的話,歡迎留言讓我知道。