2013-11-27 42 views
3

我正在開發一個ASP.NET應用程序。我有一個名爲ExcelApp的Excel 2013文件,我也已添加到我的項目中。我無法訪問該文件。在ASP.NET中訪問Excel 2013文件

這裏是我的DAL類:

public string ExcelConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Nimit\ExcelApplication.xlsx;Extended Properties='Excel 12.0 Xml';HDR=YES"; 
    OleDbDataAdapter DbAdap; 
    DataTable dt; 

    public DataTable Get_ExcelSheet() 
    { 
     OleDbConnection DbCon = new OleDbConnection(ExcelConnection); 

     DbAdap = new OleDbDataAdapter("SELECT * FROM [Sheet1$]",DbCon); 
     dt = new DataTable(); 
     DbAdap.Fill(dt); 
     return dt; 
    } 

我的CS文件代碼:

public partial class WebForm1 : System.Web.UI.Page 
{ 
    DAL obj = new DAL(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack == true) 
     { 
      Get_Data(); 
     } 
    } 

    void Get_Data() 
    { 
     GridView1.DataSource = obj.Get_ExcelSheet(); 
     GridView1.DataBind(); 
    } 
} 

我的調試器顯示錯誤而執行這一行:

DbAdap.Fill(dt); 

唯一的例外是:

enter image description here

+0

什麼是[ExcelApp $]? – Marco

+0

檢查你的表名是正確 – Zaki

+0

@Serv ExcelApp $是我的excel文件名.. –

回答

5

我解決我的問題。這裏是我的代碼:

public class DAL 
{ 
    OleDbDataAdapter DbAdap; 
    DataTable dt; 

    public DataTable Get_ExcelSheet() 
    { 
     OleDbConnection DbCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Nimit\\ExcelApplication.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;\""); 

     DbAdap = new OleDbDataAdapter("SELECT * FROM [Sheet1$]",DbCon); 
     dt = new DataTable(); 
     DbAdap.Fill(dt); 
     return dt; 
    } 
} 

我只是在我的OleDbConnection提供我的連接字符串。而已。

0

首先檢查您的連接字符串;它必須包含Excel「ExcelApp.xlsx」的參考。 其次Excel中的ExcelApp $必須參考工作表名稱而不是Excel文件名。

希望你解決這個問題

+0

我在工作表Sheet1爲$ Select語句變化表名,但同樣的異常來.. –

2

我認爲你應該再讀一遍例外。還有就是爲什麼這個代碼失敗,你一個明確的信息......我會給你一個提示:

Additiona信息:「Microsoft.ACE.OLEDB.40' 提供者未註冊在本地計算機上

修正了,它應該工作。

+0

我安裝的Office系統驅動程序,我也跟着鏈接 HTTP://www.codeproject。com/Questions/509389/27Microsoft-ACE-OLEDB-12-0-27plusproviderplusisplu 但錯誤繼續 –

1

而不是Microsoft.ACE.OLEDB.4.0使用Microsoft.ACE.OLEDB.12.0

而且還牛逼通過傳遞相對/絕對路徑。

注:在我的連接字符串我傳遞文件路徑+文件名

connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";", 
             filePath + fileName) 
+0

這裏是有用的參考連接字符串:http://www.connectionstrings.com/excel-2013/ – Dawid

+0

同樣的問題發生 –

+0

請在C:\ Program Files文件(x86)\ Common Files \ Microsoft Shared \ OFFICE12 \中找到ACEOLEDB.DLL dll如果不存在,您需要下載並註冊Windows – Sid