“预期”“尝试打开excel文件时

时间:2014-01-02 02:34:17

标签: c# excel

我目前正在尝试从存储在我的服务器计算机上的excel文件中检索数据。这是代码。

public void ImportDataFromExcel(string excelPath)
{
  string connString ="server=D0123;uid=abc;pwd=abc@123;database=MYDB";
  string SqlTable = "xx_fields";
  string excelQuery = "Select FieldName,FieldType,Length,Decimal from [Sheet1$]";

  try {
     string excelConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+excelPath+";Extended Properties="+"\"Excel 12.0;HDR=Yes;IMEX=1\"";

     OleDbConnection oleDbconn = new OleDbConnection(excelConnStr);
     oleDbconn.Open(); 
     OleDbCommand oleDbcmd = new OleDbCommand(excelQuery,oleDbconn); 
     OleDbDataReader dr = oleDbcmd.ExecuteReader();
     SqlBulkCopy bulkCopy = new SqlBulkCopy(connString); 
     bulkCopy.DestinationTableName = SqlTable;

     while(dr.Read()) {
       bulkCopy.WriteToServer(dr);
     }

     oleDbconn.Close();
  } catch(Exception e) {
    Response.Write("<script>alert('Error : '" + e.Message + ");</script>");
  }
 }

但是,每次我尝试打开excel连接字符串时,我都会收到错误:“预期”。我尝试过改变:

string excelConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+excelPath+";Extended Properties="+"\"Excel 12.0;HDR=Yes;IMEX=1\"";

string excelConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+excelPath+";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1""";

我的Excel文件格式如下:

FieldName   FieldType   Length   Decimal
Name         String        10       
Date         Numeric        8        0
Address      String        40 
Age          Numeric        2        0
Price        Numeric        8        2

我仍然得到同样的错误。是什么赋予了?最后一点,这个C#代码在私有引擎上运行,因此不能使用MS Visual Studio或其他库,如MS Office Interop。

1 个答案:

答案 0 :(得分:1)

连接字符串应为

string excelConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
excelPath + ";Extended Properties=" + "\"Excel 12.0;HDR=Yes;IMEX=1\"";

更新:

http://www.connectionstrings.com/ace-oledb-12-0/ 显示这个

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";

您的excelPath应该是服务器上的物理路径。您可以使用Server.MapPath()来获取物理路径。但是,对于此函数,excelPath是参数,因此,在调用此函数之前,您需要确保excelPath