0

私はこれを読んでいます:

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 = new OleDbConnection(excelConnectionString);
1575 行目:
1576 行目: excelConnection.Open();
1577 行目:
1578 行目:

ファイルはまだ開いているようですが、そうではなく、実行中のプロセスを確認しましたが、そこにはありません

今、私は何をすべきですか?...Excel シートを閉じているのに、このエラーが発生する

私は自分のコムにマイクロソフトのアクセス権を持っていません。それが問題になる可能性があります

この問題は、私が使用しているファイルアップロードコントロールと関係がありますか??

4

3 に答える 3

2

まあ、エラーは言う:

ファイル '' を開けません。

そのため、Excel 接続文字列が無効であるかのように見えます。有効な Excel ファイル名が含まれていません。

いつ、どこでExcel 接続文字列を設定しますか??

その瞬間、filepath1あなたが使っているものは有効ですか?

有効な Excel ファイル名が含まれていますか??

更新:私が理解できない理由:xlspathメソッドにパラメーターとして渡しています-まだ、そのxlspathをどこでも使用していないようです-最も確実に連結しないでくださいexcelConnectionString....

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

excelConnectionString接続を作成する直前に、この行にブレークポイントを設定できますか?あなたの見た目はどうですか? xlspath含まれている可能性vendor.xlsがありますが、Excel接続文字列がその値に設定されることさえありませんか??

于 2012-11-10T10:42:22.153 に答える
1

Webアプリが実行されているアカウントに、ファイルに対するアクセス許可があることを確認してください。

また、パスを使用しておらず、ファイル名だけを使用しているため、ファイルが存在する場所でファイルが見つからない可能性があります。Webアプリケーションに関連してファイルはどこにありますか?

System.IO.File.ReadAllBytes(filepath1)は成功しましたか、それとも失敗しましたか?

ファイルのアップロードを扱っているので:

ユーザーはブラウザを介して自分のコンピュータからアップロードしており、ファイルは応答後のサーバーに転送されます。参照: http: //blog.divergencehosting.com/2009/03/12/upload-read-parse-file-aspnet/

フルパスを使用している場合でも、サーバーからユーザーのコンピューター上のファイルにアクセスすることはできません。uploadControl.PostedFile.InputStream;ブラウザは、uploadControlがasp:FileUploadコントロールの名前であるファイルのコピーを送信します。

次に、このストリームをサーバー上のファイルの場所に保存し、接続文字列へのこのフルパスを指定する必要があります。

OleDbConnectionの代わりにEPPlusのようなものを使用してファイルを読み取る場合は、最初にファイルを保存する代わりに、メモリ内ストリームを使用できます。

于 2012-11-12T06:35:37.833 に答える
1

Excel ファイルが Microsoft Excel で開かれています。Excelウィンドウを閉じると、すべて問題ありません。

于 2012-11-10T11:04:48.750 に答える