2011-06-20 5 views
0

Dans mon application, je veux que les données de base de données soient exportées vers la feuille Excel et que je doive faire ce fichier en lecture seule et je veux afficher le message si l'utilisateur essaye pour éditer cette feuille je fais ceci dans l'application de console.Conversion de la table sql en table excel

Je code écrit comme ceci:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.SqlClient; 
using System.Data.Odbc; 

namespace ConsoleApplication1{ 

class Program 
{ 

    static void Main(string[] args) 
    { 

     SqlConnection con = new SqlConnection 
     (""); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand 
     ("select Temprature,time,date from temprature3 ", con); 
     SqlDataReader data = cmd.ExecuteReader(); 
     OdbcConnection dcon = new OdbcConnection(); 
     dcon.ConnectionString = @"Driver={Microsoft Excel Driver(*.xls)};Create_DB=C:\Documents andSettings\Administrator\Desktop\Excel\Report.xls;DBQ=C:\Documents and Settings\Administrator\Desktop\Excel\Report.xls; 
    ReadOnly=True"; 
     dcon.Open(); 
     OdbcCommand dcom=new OdbcCommand 
      ("create table Report new 
      (Temperature double,Time datetime,Date datetime)",dcon); 
     dcom.ExecuteNonQuery(); 
     Console.WriteLine("table has been created"); 
     OdbcCommand dinsert=new OdbcCommand("insert into Report values(?,?,?)",dcon); 
     OdbcParameter Temprature=new OdbcParameter("@Temperature",OdbcType.Double); 
     OdbcParameter Time=new OdbcParameter("@Temperature",OdbcType.DateTime); 
     OdbcParameter Date=new OdbcParameter("@Temperature",OdbcType.DateTime); 
     dinsert.Parameters.Add(Temprature); 
     dinsert.Parameters.Add(Time); 
     dinsert.Parameters.Add(Date); 
     int count=0; 
     while(data.Read()) 
     { 
      Temprature.Value=data[0]; 
      Time.Value=data[1]; 
      Date.Value=data[2]; 
      dinsert.ExecuteNonQuery(); 
      count=count+1; 

     } 

     Console.WriteLine("------------------------------------------------------"); 
     Console.WriteLine(count+"Number of rows are exported to excel"); 
     Console.WriteLine("-------------------------------------------------------"); 
     Console.ReadLine(); 
    } 
} 
} 

Je reçois une erreur comme ceci:

ERREUR [IM002] [Microsoft] [Pilote ODBC Manager] Nom de la source de données introuvable et pas de pilote par défaut spécifié

+1

votre SqlConnection nécessite une chaîne de connexion? – Ben

+0

ya que j'ai écrit dans mon code mais je n'ai pas affiché ici .. – Sweety

+1

Pourrait-il être les espaces dans le chemin du fichier ...? essayez d'envelopper avec '" '... –

Répondre

0

Mon 2 Cents à ce sujet: - Assurez-vous que le nom de la source de données a été donné correctement. Si cela est correct, assurez-vous que le pilote est correctement installé. Essayez de le réinstaller.

Assurez-vous également que le nom de la source de données a été défini à l'aide du même compte Windows NT sous lequel l'application s'exécute.

Si l'application s'exécute en tant que service Windows NT, la source de données doit être une source de données système.

+0

@roy - où devrais-je vérifier si le pilote est installé ou non si cela ne vous dérange pas pouvez-vous me dire ... – Sweety

+0

vérifier le registre pour cette clé HKEY_LOCAL_MACHINE \ SOFTWARE \ Pilotes Microsoft \ ODBC \ ODBC – Ash