![](/img/trans.png)
[英]C# VFP OLEDB connection string problems (DBF and CDX vs DBF and IDX)
[英]Create .DBF in C# code that is readable from Excel (VFP or not)
语言: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,但我希望它是自动的。
有任何想法吗?
提前致谢
这是一个小型控制台应用程序,它将使用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();
}
}
直接从VFP,它很容易...
use YourTable
Copy To SomeFile type XLS
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.