2011-06-20 43 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