2013-07-23 29 views
3

我试图从Excel文件加载gridview。但我得到这个错误如何从c#中的asp.net中的excel文件加载gridview?

Microsoft Jet数据库引擎'Sheet1 $'找不到对象。确保对象存在,并确保其名称拼写正确,路径。

并且在这一行中有一个错误:excelDataAdapter.Fill(dt);

我有一个.xls文件中的App_Data folder.Wh

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.IO; 
using System.Data; 
using System.Data.OleDb; 




namespace Excell 
{ 
public partial class LoadExcelToGrid: System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     gv.DataSource = exceldata(Server.MapPath("~/data.xls")); 
     gv.DataBind(); 
    } 
    public static DataSet exceldata(string filelocation) 
    { 
     DataSet ds = new DataSet(); 
     OleDbCommand excelCommand = new OleDbCommand(); OleDbDataAdapter excelDataAdapter = new 
OleDbDataAdapter(); 
     string excelConnStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + filelocation + 
"; Extended Properties=Excel 8.0;"; 
     OleDbConnection excelConn = new OleDbConnection(excelConnStr); 
     excelConn.Open(); 
     DataTable dt = new DataTable(); 
     excelCommand = new OleDbCommand("Select * from [Sheet1$]", excelConn); 
     excelDataAdapter.SelectCommand = excelCommand; 
     excelDataAdapter.Fill(dt); 

     ds.Tables.Add(dt); 

     return ds; 
    } 


} 
} 
+1

对于初学者从App_Data文件加载:使用Server.Mappath( “〜/ App_Data文件/ data.xls”) –

+0

赫雷什上的导入Excel数据的制品,以GRIDVIEW http://codepedia.info/2015/04/ import-excel-sheet-data-to-gridview-asp-net -c-sharp/ –

回答

7

此代码对我的作品。

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
String strConnection = "ConnectionString"; 
string connectionString =""; 
if (FileUpload1.HasFile) 
{ 
    string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 
    string fileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName); 
    string fileLocation = Server.MapPath("~/App_Data/" + fileName); 
    FileUpload1.SaveAs(fileLocation); 
    if (fileExtension == ".xls") 
    { 
     connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
      fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
    } 
    else if (fileExtension == ".xlsx") 
    { 
     connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
      fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
    } 
    OleDbConnection con = new OleDbConnection(connectionString); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.CommandType = System.Data.CommandType.Text; 
    cmd.Connection = con; 
    OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd); 
    DataTable dtExcelRecords = new DataTable(); 
    con.Open(); 
    DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
    string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString(); 
    cmd.CommandText = "SELECT * FROM [" + getExcelSheetName +"]"; 
    dAdapter.SelectCommand = cmd; 
    dAdapter.Fill(dtExcelRecords); 
    GridView1.DataSource = dtExcelRecords; 
    GridView1.DataBind(); 
} 
+0

谢谢bro。解决方案您的回答 – Mhmt

+0

什么是FileUpload1在这里?当我写它时,它正在抛出“在当前上下文中不存在”。哪个库很重要? – abidinberkay

+0

Fileupload1是fileupload控件,在使用界面选择excel文件。 – Raghubar

相关问题