iT邦幫忙

1

C# 製作 excel 匯入資料庫的網頁

我作一個 c# excel 匯入 資料庫的網頁
在VS端開發測試抓取xls檔路徑都抓的到,
但發行到 IIS的時後欲說【'Z:\04a.人事課\a001.xls' 不是一個有效的路。請確定路徑名稱是拼對的,而且檔案位於您所連接的伺服器上。】

可以請大大們幫忙是什麼問題呢? 謝謝!!

![https://ithelp.ithome.com.tw/upload/images/20191230/20071931fwjRdj3Ytw.png]

 //班別異動匯入
    
            string xlsPath = "Z:\\04a.人事課\\hrclass_20191230.xls";
            string sheetName = "工作表1";


            //SQL連線字串 清除


            //清除先前資料

           using (OleDbConnection conn_excel = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + xlsPath + "';Extended Properties = 'Excel 8.0;HDR=YES;IMEX=1;'"))

            {

                conn_excel.Open();
                    //SELETE EXCEL 筆數
                    OleDbCommand cmd_excel = new OleDbCommand("SELECT [工號],[班別],[開始日期],[結束日期] FROM [" + sheetName + "$];", conn_excel);

                    OleDbDataReader reader_excel = cmd_excel.ExecuteReader();





                    //SQL連線字串 新增

                    using (SqlConnection cn_sql = new SqlConnection(@"server=192.168.1.*;uid=***;pwd=***;database=***"))

                    {

                        cn_sql.Open();

                        //宣告Transaction

                        SqlTransaction stran = cn_sql.BeginTransaction();

                        try

                        {

                            while (reader_excel.Read())

                            {


                                //新增
                                SqlCommand cmd_sql = new SqlCommand("insert into YS_Class2_temp (工號,班別,開始日期,結束日期) values ('" + reader_excel[0] + "','" + reader_excel[1] + "','" + Convert.ToDateTime(reader_excel[2]).ToString("yyyy-MM-dd hh:mm:ss") + "','" + Convert.ToDateTime(reader_excel[3]).ToString("yyyy-MM-dd hh:mm:ss") + "')", cn_sql);

                                cmd_sql.Transaction = stran;

                                cmd_sql.ExecuteNonQuery();

                            }

                            //迴圈跑完並一次Insert

                            stran.Commit();
                            Response.Write("class新增1成功<br>");
                            Insert_class_log1();
                            Insert_class_log2();
                            Insert_class();

                        }

                        catch (SqlException ex)

                        {

                            Response.Write(ex.Message);

                            Response.Write(ex.Number);

                            stran.Rollback();

                        }

                        catch (OleDbException ex)

                        {

                            Response.Write(ex.Message);

                            stran.Rollback();

                        }

                        catch (Exception ex)

                        {

                            Response.Write(ex.Message);

                            stran.Rollback();

                        }

                        finally

                        {

                            cn_sql.Close();

                            conn_excel.Close();

                            reader_excel.Close();
                            //Main_class();
                        }

                    }

                }
3
player
iT邦大師 1 級 ‧ 2019-12-30 19:24:59
最佳解答

IIS存取網路磁碟機
有可能會卡在權限上而存取不到 (IIS跑的使用者帳號預設是IUSR吧?)
如果你堅持要用網路磁碟機
請在存取網路磁碟機之前
用C#再跑一次登入該網路磁碟機以取得權限
https://takamai.pixnet.net/blog/post/38389805-%5B.net%5D-(c%23,vb)-%E9%80%A3%E7%B7%9A%E7%B6%B2%E8%B7%AF%E7%A3%81%E7%A2%9F%E6%A9%9F---%E4%B8%AD%E6%96%B7%E7%B6%B2%E8%B7%AF%E7%A3%81%E7%A2%9F%E6%A9%9F

你可以用Directory.Exists
先去檢查該路徑存不存在?

IIS跑的帳號, 跟你登入Windows的帳號不一樣
所以權限與能否存取到網路磁碟機應該也不一樣

pp73793 iT邦新手 4 級 ‧ 2020-01-03 11:59:03 檢舉

後來我選擇直接上傳到 iis server 上存放,所以就沒有權限問題了 謝謝!!

0
allenlwh
iT邦研究生 2 級 ‧ 2019-12-30 17:12:08

發行到IIS的那台主機,也有"Z:",這個路徑嗎?

pp73793 iT邦新手 4 級 ‧ 2019-12-30 18:01:49 檢舉

我確定有,我有設定網路磁碟機Z:

pp73793 iT邦新手 4 級 ‧ 2019-12-30 18:03:16 檢舉

而且測試環境試都OK ,上傳到 IIS 就抓不到路徑了!!
謝謝!!

0
小魚
iT邦大師 1 級 ‧ 2019-12-30 17:25:39

你確定有這個路徑嗎?

pp73793 iT邦新手 4 級 ‧ 2019-12-30 18:02:05 檢舉

確定有!!

我要發表回答

立即登入回答