C# sql表到excel表的转换

C# sql表到excel表的转换,c#,sql,export-to-excel,C#,Sql,Export To Excel,在我的应用程序中,我希望将数据库数据导出到Excel工作表,我必须将此文件设置为只读,并且如果用户试图编辑Excel,我希望显示一条消息,就像不允许您编辑此工作表一样。我正在控制台应用程序中执行此操作 我编写了如下代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data.Odbc;

在我的应用程序中,我希望将数据库数据导出到Excel工作表,我必须将此文件设置为只读,并且如果用户试图编辑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();
    }
}
}
我得到的错误如下:

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();
    }
}
}
错误[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序

我在这上面花了2美分:- 确保正确提供了数据源名称。如果正确,请确保驱动程序安装正确。尝试重新安装它

另外,请确保数据源名称是使用运行应用程序的相同Windows NT帐户定义的


如果应用程序作为Windows NT服务运行,则数据源必须是系统数据源。

您的SqlConnection需要连接字符串?是的,我在代码中编写了,但没有在此处显示。可能是文件路径中的空格。。。?尝试用
…文件路径中没有空格..excel工作表名称正确吗?工作表应该类似于[Report$]..@roy-如果您不介意,我应该在哪里检查是否安装了驱动程序?请告诉我…检查注册表中的此项HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\ODBC\ODBC驱动程序