2016-03-15 5 views
0

Я разрабатываю веб-приложение asp.net, и я хотел бы импортировать excier 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

я также USIN его но он не может прочитать таблицу [sheet1 $] !!!!!!! – welliam

ответ

0

Я бы предложил попробовать что-то вроде этого

 //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

Описание: Произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Ознакомьтесь с приведенными ниже конкретными данными об ошибках и соответствующим образом измените исходный код. Compiler Error Message: CS1056: Неожиданный символ '$' Источник ошибки: Строка 72: NpgsqlDataReader читатель; Строка 73: cnx.Open(); Строка 74: quer = "INSERT INTO poi (num_route, pk, geom) выберите num_route, pk_debut из" Sheet1 $ ""; Строка 75: NpgsqlCommand cm = new NpgsqlCommand (quer, cnx); Строка 76: reader = cm.ExecuteReader(); – welliam

+0

@welliam кажется, что таблица «sheet1» не существует на сервере –