2

语言:C#,系统:Windows7,Excel 2007

我想从一些数据创建一个 .DBF,我想从 Excel 2007 打开它。它可以是 dBase 或 foxpro。我目前在 FoxPro9 中做(顺便说一句,这段代码来自互联网):

 OleDbConnection con = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\\Temp\\;");
            con.Open();
            OleDbCommand cmd1 = new OleDbCommand("Create Table TestDBF (Field1 I, Field2 C(10))", con);
            OleDbCommand cmd2 = new OleDbCommand("Insert Into TestDBF Values (1, 'Hello')", con);
            OleDbCommand cmd3 = new OleDbCommand("Insert Into TestDBF Values (2, 'World')", con);
            cmd1.ExecuteNonQuery();
            cmd2.ExecuteNonQuery();
            cmd3.ExecuteNonQuery();
            con.Close();

这会生成文件,我可以在 DbfViewer 中打开它,但是,我无法在 Excel 2007 中打开它,也无法在我拥有的某些应用程序中使用。我可以使用 DbfViwer 手动将 FoxPro .dbf 转换为 dbaseIII dbf,但我希望它是自动的。

有任何想法吗?

提前致谢

4

3 回答 3

5

这是一个小控制台应用程序,它将使用 CREATE TABLE SQL 语法创建 DBF,然后将其复制到可以在 Excel 中打开的 FoxPro DBF 文件格式的先前版本。

static void Main(string[] args)
{
    Console.WriteLine("Starting program execution...");

    string connectionString = @"Provider=VFPOLEDB.1;Data Source=C:\YourDirectory\";

    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        using (OleDbCommand scriptCommand = connection.CreateCommand())
        {
            connection.Open();

            string vfpScript = @"Create Table TestDBF (Field1 I, Field2 C(10))
                                USE TestDBF
                                COPY TO OpensWithExcel TYPE Fox2x
                                USE";

            scriptCommand.CommandType = CommandType.StoredProcedure;
            scriptCommand.CommandText = "ExecScript";
            scriptCommand.Parameters.Add("myScript", OleDbType.Char).Value = vfpScript;
            scriptCommand.ExecuteNonQuery();
        }
    }

    Console.WriteLine("End program execution...");
    Console.WriteLine("Press any key to continue");
    Console.ReadLine();
}

}

于 2010-08-25T22:35:17.480 回答
0

直接从VFP,很容易...

use YourTable
Copy To SomeFile type XLS
于 2010-08-25T12:21:17.797 回答
-1
        OleDbConnection con = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\\Temp\\;");
        con.Open();
        OleDbCommand cmd1 = new OleDbCommand("Create Table TestDBF (Field1 I, Field2 C(10))", con);
        OleDbCommand cmd2 = new OleDbCommand("Insert Into TestDBF Values (1, 'Hello')", con);
        OleDbCommand cmd3 = new OleDbCommand("Insert Into TestDBF Values (2, 'World')", con);
于 2010-08-25T12:41:42.570 回答