0

ここでは、SQLテーブルにデータを追加するExcelsheetをアップロードしています。コードはローカルホストで完全に機能します。サーバーでホストした後、エラーが発生 し、パス'D:\ INETPUB \ VHOSTS \ vivek-vichar.org .... \ temp \ excelsheets \StudentRegistrationTrial2.xls'へのアクセスが拒否されました。

temp\excelsheetsディレクトリをすでに作成しました。

protected void import_xls_Click(object sender, EventArgs e)
    {
        try
        {
            string savePath;
            savePath = Server.MapPath("/temp/excelsheets");

            if (xlsupload.HasFile)
            {
                string fileName = xlsupload.FileName;
                savePath = Path.Combine(savePath, fileName);
                xlsupload.SaveAs(savePath);                  

                string excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + savePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";

                OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
                excelConnection.Open();

                OleDbCommand cmd = new OleDbCommand("select * from [Sheet2$]", excelConnection);                    
                OleDbDataReader dReader = cmd.ExecuteReader();

                SqlBulkCopy sqlBulk = new SqlBulkCopy(SqlConnectionstring.mainConnectionString, SqlBulkCopyOptions.KeepIdentity);
                if(grouplist.SelectedItem.Text == "A")
                {
                    sqlBulk.DestinationTableName = "dbo.studentA"; 
                }
                else if (grouplist.SelectedItem.Text == "B")
                {
                    sqlBulk.DestinationTableName = "dbo.studentB";
                }
                else if (grouplist.SelectedItem.Text == "C")
                {
                    sqlBulk.DestinationTableName = "dbo.studentC";
                }
                sqlBulk.ColumnMappings.Add("UserName", "UserName");
                sqlBulk.ColumnMappings.Add("Password", "Password");
                sqlBulk.ColumnMappings.Add("Name", "Name");
                sqlBulk.ColumnMappings.Add("Standard", "Standard");
                sqlBulk.ColumnMappings.Add("Division", "Division");
                sqlBulk.ColumnMappings.Add("SchoolName", "SchoolName");
                sqlBulk.ColumnMappings.Add("Language", "Language");                                       

                sqlBulk.WriteToServer(dReader);

                lblmsg.Visible = true;
                lblmsg.Text = "Your data uploaded successfully";
                excelConnection.Close();
            }
        }
        catch (Exception ex)
        {
            lblmsg.Visible = true;
            lblmsg.Text = ex.Message.ToString();

        }

Webconfig

<connectionStrings>
<add name="sqlconn" connectionString="Data Source=<servername>;User Id=******;Password=******;persist security info=False;Connect Timeout=0;Max Pool Size=10000" providerName="System.Data.SqlCient" />    

4

2 に答える 2

1

サーバー上で、それを含むファイルまたはフォルダーを見つけて、:-

  • 右クリックして[プロパティ]を選択します。
  • プロセスを実行しているユーザーアカウントを、読み取り/書き込みアクセス権を持つセキュリティ権限に追加します。
于 2012-08-25T21:23:41.250 に答える
0

ここでの接続文字列はデータベース用です。スプレッドシートにアクセスする必要がある「ユーザー」は、IISアプリケーションが実行されているユーザー、場合によってはIUSRアカウント、またはIISのバージョンとセットアップに応じてアプリケーションプールが使用するように構成されているアカウントです。

于 2012-08-25T19:51:48.407 に答える