语法错误在或接近pgsl?

问题描述:

我正在开发一个asp.net web应用程序,我想导入一个更好的excel到postgresql。我使用这段代码,但它给了我这个错误。你可以帮我吗? 说明:编译服务此请求所需的资源时发生错误。请查看以下具体的错误细节并适当修改您的源代码。语法错误在或接近pgsl?

编译器错误信息:CS1056:意外的字符 '$'

Line 74: quer = "INSERT INTO poi (num_route, pk, geom) select num_route,pk_debut from [Sheet1$]"; Line 75: NpgsqlCommand cm = new NpgsqlCommand(quer, cnx); L ine 76: reader = cm.ExecuteReader();

using System; 
 
using System.Configuration; 
 
using System.IO; 
 
using System.Data; 
 
using System.Drawing; 
 
using System.Data.OleDb; 
 
using System.Linq; 
 
using System.Web; 
 
using System.Web.Security; 
 
using System.Web.UI; 
 
using System.Web.UI.HtmlControls; 
 
using System.Web.UI.WebControls; 
 
using System.Web.UI.WebControls.WebParts; 
 
using System.Xml.Linq; 
 
using System.Collections; 
 
using System.Text; 
 
using System.Xml; 
 
using Npgsql; 
 
using System.Collections.Specialized; 
 
using System.Collections.Generic; 
 

 
public partial class _Default : System.Web.UI.Page 
 
{ 
 
    protected void Page_Load(object sender, EventArgs e) 
 
    { 
 
     lblMessage.Text = "Please select an excel file first"; 
 
     lblMessage.Visible = false; 
 
    } 
 
    protected void btnUpload_Click(object sender, EventArgs e) 
 
    { 
 
     if ((txtFilePath.HasFile)) 
 
     { 
 
      
 
      OleDbConnection conn = new OleDbConnection(); 
 
      OleDbCommand cmd = new OleDbCommand(); 
 
      OleDbDataAdapter da = new OleDbDataAdapter(); 
 
      DataSet ds = new DataSet(); 
 
      string query = null; 
 
      string quer = null; 
 
      string connString = ""; 
 
      string strFileName = DateTime.Now.ToString("ddMMyyyy_HHmmss"); 
 
      string strFileType = System.IO.Path.GetExtension(txtFilePath.FileName).ToString().ToLower(); 
 

 
      //Check file type 
 
      if (strFileType == ".xls" || strFileType == ".xlsx") 
 
      { 
 
       txtFilePath.SaveAs(Server.MapPath("~/UploadedExcel/" + strFileName + strFileType)); 
 
      } 
 
      else 
 
      { 
 
       lblMessage.Text = "Seuls les fichiers Excel autorisés"; 
 
       lblMessage.ForeColor = System.Drawing.Color.Red; 
 
       lblMessage.Visible = true; 
 
       return; 
 
      } 
 

 
      string strNewPath = Server.MapPath("~/UploadedExcel/" + strFileName + strFileType); 
 

 
      //Connection String to Excel Workbook 
 
      if (strFileType.Trim() == ".xls") 
 
      { 
 
       connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
 
      } 
 
      else if (strFileType.Trim() == ".xlsx") 
 
      { 
 
       connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
 
      } 
 

 

 
      query = "SELECT num_route,pk_debut,pk_fin FROM [Sheet1$]"; 
 
      NpgsqlConnection cnx = new NpgsqlConnection("Server=localhost;Port=5432;User Id=postgres;Password=*****;Database=****;"); 
 
      NpgsqlDataReader reader; 
 
      cnx.Open(); 
 
      quer = "INSERT INTO poi (num_route, pk) select num_route,pk_debut from "Sheet1$""; 
 
      NpgsqlCommand cm = new NpgsqlCommand(quer, cnx); 
 
      reader = cm.ExecuteReader(); 
 
     
 
      //Create the connection object 
 
      conn = new OleDbConnection(connString); 
 
      //Open connection 
 
      if (conn.State == ConnectionState.Closed) conn.Open(); 
 
      //Create the command object 
 
      cmd = new OleDbCommand(query, conn); 
 
      da = new OleDbDataAdapter(cmd); 
 
      ds = new DataSet(); 
 
      da.Fill(ds); 
 

 
      grvExcelData.DataSource = ds.Tables[0]; 
 
      grvExcelData.DataBind(); 
 

 
      lblMessage.Text = "Les données récupérées avec succès! Total de lignes:" + ds.Tables[0].Rows.Count; 
 
      lblMessage.ForeColor = System.Drawing.Color.Green; 
 
      lblMessage.Visible = true; 
 

 
      da.Dispose(); 
 
      conn.Close(); 
 
      conn.Dispose(); 
 
     } 
 
     else 
 
     { 
 
      lblMessage.Text = "S'il vous plaît sélectionner un fichier excel"; 
 
      lblMessage.ForeColor = System.Drawing.Color.Red; 
 
      lblMessage.Visible = true; 
 
     } 
 
    } 
 
}

+0

我也全光照它的东西但他不能读表[sheet1 $] !!!!!!! – welliam

我会建议尝试这样

 //Connection String to Excel Workbook 
     if (strFileType.Trim() == ".xls") 
     { 
      connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
     } 
     else if (strFileType.Trim() == ".xlsx") 
     { 
      connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
     } 

     var Builder = new StringBuilder("INSERT INTO poi (num_route, pk) select num_route,pk_debut VALUES "); 

     bool first = true; 
     using (var conn = new OleDbConnection(connString)) 
     { 
      if (conn.State == ConnectionState.Closed) conn.Open(); 
      using (var cmd = new OleDbCommand("SELECT num_route,pk_debut,pk_fin FROM [Sheet1$]", conn)) 
      using (var da = cmd.ExecuteReader()) 
      { 
       while (da.Read()) 
       { 
        if (!first) Builder.Append(","); 
        Builder.Append("("); 
        Console.WriteLine(da[0]); 
        Builder.Append(","); 
        Console.WriteLine(da[1]); 
        Builder.Append(","); 
        Console.WriteLine(da[2]); 
        Builder.Append(")"); 
        first = false; 
       } 
      } 
     } 

     using (NpgsqlConnection cnx = new NpgsqlConnection("Server=localhost;Port=5432;User Id=postgres;Password=*****;Database=****;")) 
     { 
      cnx.Open(); 
      var quer = Builder.ToString(); 
      using (NpgsqlCommand cm = new NpgsqlCommand(quer, cnx)) 
       cm.ExecuteNonQuery(); 
     } 
+0

我也是用它,但他不能读表[sheet1 $] !!!!!!! – welliam

+0

说明:编译服务此请求所需的资源时发生错误。请查看以下具体的错误细节并适当修改您的源代码。 编译器错误消息:CS1056:意外字符 '$' 源错误: 72行:NpgsqlDataReader读取器; 第73行:cnx.Open(); 第74行:quer =“插入到poi(num_route,pk,geom)select num_route,pk_debut from”Sheet1 $“”; 第75行:NpgsqlCommand cm = new NpgsqlCommand(quer,cnx); 第76行:reader = cm.ExecuteReader(); – welliam

+0

@welliam似乎表“sheet1”在服务器上不存在 –