簡體   English   中英

我無法從Excel文件中讀取並使用C#中的asp.net存儲到數據庫中?

[英]I am not able to read from Excel file and store into database using asp.net in c#?

我正在這樣做閱讀:

private bool writetoven(string xlspath)
{
    OleDbConnection excelConnection = new OleDbConnection(excelConnectionString)


    try
    {
        OleDbCommand ocmd = new OleDbCommand("select * from [Sheet1$]", excelConnection);
        excelConnection.Open();
        OleDbDataReader odr = ocmd.ExecuteReader();
        string vcode = "";
        string pswd = "";
        string vname = "";

        while (odr.Read())
        {
            vcode = valid(odr, 0);
            pswd = valid(odr, 1);
            vname = valid(odr, 2);

            insertdataintosql(vcode,pswd,vname);
        }
        excelConnection.Close();
        return true;
    }
    catch (DataException)
    {
        return false;
    }
    finally
    {
        lblmsg4.Text = "Data Inserted Sucessfully";
    }
}

和我的連接字符串是這樣的:

excelConnectionString = "provider=Microsoft.jet.oledb.4.0;data source=" + 
                        filepath1 + 
                        ";extended properties='Excel 8.0;HDR=YES;'";

但我得到一個錯誤

Microsoft Jet數據庫引擎無法打開文件“”。 它已經由另一個用戶獨占打開,或者您需要權限才能查看其數據。

1574行:OleDbConnection excelConnection =新的OleDbConnection(excelConnectionString);
1575行:
1576行:excelConnection.Open();
1577行:
1578行:

似乎該文件仍處於打開狀態,但它沒有打開,我已經檢查了運行過程,並且它不存在

現在我該怎么辦? ...我的Excel工作表已關閉,但出現此錯誤

我在我的com上沒有Microsoft訪問權限,這可能是一個問題

這個問題與我使用的文件上傳控件有關嗎?

好吧,錯誤提示:

無法打開文件“。

因此,似乎您的Excel連接字符串似乎無效-那里沒有有效的Excel文件名!

您何時何地設置 Excel連接字符串?

您當時使用的filepath1是否有效?

它包含有效的Excel文件名嗎?

更新:為什么我不明白是:您將xlspath作為參數傳遞給您的方法-但是,您似乎沒有在任何地方使用該xlspath-最肯定的是不會將excelConnectionString連接在一起...。

private bool writetoven(string xlspath)
{
    OleDbConnection excelConnection = new OleDbConnection(excelConnectionString)

您可以在創建連接之前在此行上設置一個斷點excelConnectionString什么樣的嗎? 難道xlspath包含vendor.xls但您的Excel連接字符串甚至從未設置為該值?

您的excel文件在Microsoft Excel中打開。 關閉Excel窗口,一切都會好起來。

確保您的Web應用程序所運行的帳戶對該文件具有權限。

另外,由於您不使用路徑,而僅使用文件名,因此可能找不到它所在的文件。 文件相對於Web應用程序位於何處?

System.IO.File.ReadAllBytes(filepath1)是否成功或失敗?

由於您正在處理文件上傳:

用戶正在通過瀏覽器從其計算機上載,並且文件在發布響應中被傳輸到您的服務器。 參見: http : //blog.divergencehosting.com/2009/03/12/upload-read-parse-file-aspnet/

即使您擁有完整路徑,也無法從服務器訪問用戶計算機上的文件。 瀏覽器將在uploadControl.PostedFile.InputStream;向您發送文件的uploadControl.PostedFile.InputStream; 其中uploadControl是asp:FileUpload控件的名稱。

然后,您需要將此流保存到服務器上的文件位置,並提供連接字符串的完整路徑。

如果您使用EPPlus之類的方法而不是OleDbConnection來讀取文件,則可以使用內存中的流而不是先保存文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM