2011-06-20 44 views
0

在我的應用程序要導出到Excel工作表數據庫中的數據,我不得不做出這個文件爲只讀,我想如果用戶嘗試編輯Excel來顯示信息一樣,你不準編輯這張工作表我在控制檯應用程序中執行此操作。轉換SQL表到excel表格

我寫這樣的代碼:

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(); 
    } 
} 
} 

我得到的錯誤是這樣的:

ERROR [IM002] [微軟]找不到[ODBC驅動程序管理器]數據源名稱和沒有指定默認驅動程序

+1

你的SqlConnection需要一個連接字符串? – Ben

+0

雅我寫在我的代碼,但我沒有在這裏顯示.. – Sweety

+1

它可能是文件路徑中的空間...?嘗試用'「'... –

回答

0

我的2分這方面: - 請確保數據源名稱已正確給定。如果這是正確的,請確保驅動程序安裝正確。嘗試重新安裝它。

另外請確保數據源名稱是使用應用程序正在運行的相同Windows NT帳戶定義的。

如果應用程序作爲Windows NT服務運行,則數據源必須是系統數據源。

+0

@roy -where我應該檢查驅動程序是否安裝或沒有,如果你不介意,你能告訴我... – Sweety

+0

此鍵HKEY_LOCAL_MACHINE \ SOFTWARE檢查註冊表\ Microsoft \ ODBC \ ODBC驅動程序 – Ash