2010-08-25 24 views
2

語言可讀性:C#,系統:Windows7中的Excel 2007在C#代碼創建.DBF是從Excel(VFP與否)

我想創造一些數據.DBF,我想打開它從Excel 2007.它可以是dBase或foxpro。我目前在做FoxPro9(順便說一句這個代碼是從Internet):

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,但我希望它是自動的。

任何想法?

在此先感謝

回答

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

}

+0

非常好,謝謝你 – 2010-08-25 22:39:53

0

從VFP直接,它很容易...

use YourTable 
Copy To SomeFile type XLS 
+0

你從VFP直接意思?我不明白你的代碼。我對VFP瞭解甚少。 – 2010-08-25 17:00:30

+0

類型XLS不創建DBF – stuartd 2010-08-25 17:16:28

+0

是的,沒有開玩笑...但如果他想在Excel中的結果,它很容易從DBF轉儲到Excel可以輕鬆閱讀的東西。如果你真的想把它取回來,你可以創建和ODBC連接到一個空閒表或數據庫,然後Excel可以通過該連接打開一個查詢數據。他的最終結果是通過Excel獲得訪問權限,並且由於微軟的智慧並取消了這種訪問權限,您必須經歷一番困境。 – DRapp 2010-08-25 18:23:57

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