2012-10-23 45 views
0

我想将excel表单的数据导入到sql server数据库的表中,我得到一个错误:Microsoft Office Access数据库引擎找不到对象'Sheet1 $ ”。确保对象存在,并且正确拼写其名称和路径名。通过asp.net将excel导入sql server时出错fileupload

下面是我的代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Data; 
using System.Data.OleDb; 

public partial class abc2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void btnSend_Click(object sender, EventArgs e) 
    { 
     String strConnection = "Data Source=DITSEC3;Initial Catalog=test;Integrated Security=True"; 
     //file upload path 
     string path = fileuploadExcel.PostedFile.FileName; 
     //Create connection string to Excel work book 
     string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False"; 
     //Create Connection to Excel work book 
     OleDbConnection excelConnection =new OleDbConnection(excelConnectionString); 
     //Create OleDbCommand to fetch data from Excel 
     OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation] from [Sheet1$]",excelConnection); 
     excelConnection.Open(); 
     OleDbDataReader dReader; 
     dReader = cmd.ExecuteReader(); 
     SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); 
     //Give your Destination table name 
     sqlBulk.DestinationTableName = "Excel_table"; 
     sqlBulk.WriteToServer(dReader); 
     excelConnection.Close(); 
    } 
} 
+0

您可以打开文件并查看工作表名称吗? –

回答

0

我认为你要导入Excel表格是具有不同的充名字比工作表Sheet1 $这样,才能得到工作表名称使用follwing代码,并通过纸页类的名字到sql查询从表单中获取数据。

http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/05c92891-b839-45c8-80df-eb35e2d68258

+0

我已经检查了它的“sheet1”表的名称,我后来将其更改为“$ sheet1”,然后是“sheet1 $”,但同样的错误 – Arbaaz

+0

您不需要更改工作表名称,只需使用链接中给出的代码获取工作表的名称。因为如果你把表格的硬编码价值,然后如果它chnaged有时它不会工作。所以它最好能够获得表格名称而不是硬编码值。 – RVD

+0

那么我应该在上面的代码中添加什么? – Arbaaz

0

Excel.Application ExcelObj =新Excel.Application();

Excel.Workbook theWorkbook = null;

string strPath =“这里有EXCEL文件的路径”;该工作簿= ExcelObj.Workbooks.Open(strPath,丢失,丢失,丢失,丢失,缺失,丢失,丢失,丢失,丢失,丢失,丢失,丢失,缺失,丢失);

Excel.Sheets sheets = theWorkbook.Worksheets;

Excel.Worksheet工作表=(Excel.Worksheet)sheets.get_Item(0); //获取 的引用第二个工作表字符串strWorksheetName = worksheet.Name; //获取工作表的名称。

并在选择查询中使用strWorksheetName来获取列数据