0

ファイルのアップロードとボタンとグリッドビューを持つ Web フォームに取り組んでいます。ユーザーは、Excel ファイルをデータベースにアップロードし、グリッドビューでプレビューを表示することもできます。問題なく動作しています。私のコードは

string filename = Path.GetFileName(FileUpload1.FileName);
    FileUpload1.SaveAs(Server.MapPath("~/Publisher/ExcelFiles/") + filename);
    DataSet ds = new DataSet();
    string path = @"~/Publisher/ExcelFiles/" + filename;
    OleDbConnection myCon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");
    OleDbCommand myComm = new OleDbCommand("select * from [GIRLS$] ", myCon);
    OleDbDataAdapter da = new OleDbDataAdapter(myComm);
    da.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();

しかし、私の問題はExcelファイルのパスであり、da.Fill(ds);でエラーが発生します。

'C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\~\Publisher\ExcelFiles\glist.xls' は有効なパスではありません。パス名のつづりが正しいこと、およびファイルが存在するサーバーに接続していることを確認してください。Excel ファイルは、私の Web サイト ディレクトリにあります。パスを変更した場合、このエラーは発生しません

string path= @"D:\Vikas Rana\New folder (4)\glist.xls";

どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1

1

これを試して

string filename = Path.GetFileName(FileUpload1.FileName);

DataSet ds = new DataSet();
string path = Server.MapPath("~/Publisher/ExcelFiles/" + filename);
        FileUpload1.SaveAs(path);
OleDbConnection myCon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;
DataSource=" + path + ";Extended Properties=Excel 12.0;");
OleDbCommand myComm = new OleDbCommand("select * from [GIRLS$] ", myCon);
OleDbDataAdapter da = new OleDbDataAdapter(myComm);
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();

.xls ファイルをアップロードする場合は、これを使用します

 Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path(which you prefer);Extended Properties="Excel 8.0;HDR=YES;IMEX=1;"

.xlsx ファイルをアップロードする場合は、これを使用します

 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=path(which you prefer);Extended Properties="Excel 12.0;HDR=YES;IMEX=1;"

つまり

 OleDbConnection myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;
  DataSource=" + path + ";Extended Properties=Excel 8.0;HDR=YES;IMEX=1;");
于 2013-11-13T11:31:44.457 に答える