3

上記の注意事項を確認しましたが、役に立ちません。ASP.Net には VS2008、データベースには MS Access 2010 を使用しています。ASP Web ページを介して Excel からデータベースにデータをアップロードする必要があります。

しかし、次のようなエラーが表示されます。

「Microsoft Jet データベース エンジンは、ファイル 'C:\Users\poonamj\Documents\Visual Studio 2008\Projects\SmartTool\SmartTool\Uploads\' を開けません。既に別のユーザーによって排他的に開かれているか、そのファイルを表示する権限が必要です。データ。"

    using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Collections.Generic;
using System.Data.OleDb;

namespace SmartTool
{

    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void UploadFile(object sender, EventArgs e)
        {
            string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
            FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Uploads/") + fileName);
            Response.Redirect(Request.Url.AbsoluteUri);
        }
        protected void DownloadFile(object sender, EventArgs e)
        {
            string filePath = (sender as LinkButton).CommandArgument;
            Response.ContentType = ContentType;
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
            Response.WriteFile(filePath);
            Response.End();
        }
        protected void DeleteFile(object sender, EventArgs e)
        {
            string filePath = (sender as LinkButton).CommandArgument;
            File.Delete(filePath);
            Response.Redirect(Request.Url.AbsoluteUri);
        }
        protected void ViewFile(object sender, EventArgs e)
        {
            //string filePath = (sender as LinkButton).CommandArgument;
           // File.ReadAllLines(filePath);
            //GridView2.DataSource = File.ReadAllLines(filePath);
            //GridView2.DataBind();
            //string[] content = File.ReadAllLines(filePath);

            //GridView2.DataSource = content.
           // OleDbConnection conn = new OleDbConnection();
           // conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/Users/poonamj/Documents/Visual Studio 2008/Projects/SmartTool/SmartTool/fallout.accdb;User id=admin;Password=";
           // conn.Open();

            string Access = Server.MapPath("App_Data/fallout.accdb");
            string Excel = Server.MapPath("~/Uploads/");
            string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Excel + ";Extended Properties=Excel 8.0;Mode=12;";
            using (OleDbConnection conn = new OleDbConnection(connect))
            {
                using (OleDbCommand cmd = new OleDbCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText = "SELECT * INTO [MS Access;Database=" + Access + "].[New Table] FROM [Sheet1$]";
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
            }

        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string[] filePaths = Directory.GetFiles(Server.MapPath("~/Uploads/"));
                List<ListItem> files = new List<ListItem>();
                foreach (string filePath in filePaths)
                {
                    files.Add(new ListItem(Path.GetFileName(filePath), filePath));
                }
                GridView1.DataSource = files;
                GridView1.DataBind();
            }

        }




    }
}
4

3 に答える 3

2

コメントしたかったのですが、できません。

以下を確認しましたか?それぞれがあなたを助けることができる可能な解決策を集めています.

マイクロソフトの公式サポート ページ: http://support.microsoft.com/kb/306269

さらに、データ ソースのファイル名を含むフル パスを使用してみてください。以下に欠陥があります。

 string Excel = Server.MapPath("~/Uploads/");

の後に Excel ファイル名を追加しますUploads/

于 2013-02-20T16:48:23.540 に答える
0

過去にこの問題のトラブルシューティングに次のようなツールを使用しました: http://www.filehippo.com/download_unlocker/、さらに重要なのは、ディレクトリ機能のビューロックです。

これを考えすぎているかどうかはわかりませんが、「C:\Users\poonamj\Documents\Visual Studio 2008\Projects\SmartTool\SmartTool\Uploads\」は、ファイルを期待しているように見えるディレクトリです。

たとえば、「C:\Users\poonamj\Documents\Visual Studio 2008\Projects\SmartTool\SmartTool\Uploads\db.mdb」はファイルへのパスです。

于 2013-02-20T16:52:20.807 に答える