我试图使用C#将数据从DBF文件中提取到我的程序中.我正在使用Visual FoxPro OLE DB提供程序.它在我的本地机器上工作正常,但我想将我的程序打包成客户端可以使用的DLL.问题是,当他们从他们的机器运行程序时,它说Visual FoxPro OLE DB提供程序没有在他们的机器上注册.有没有办法在没有客户端在他们的机器上安装Visual FoxPro OLE DB提供程序的情况下使用它?
使用Delphi,现在64位操作系统不再支持Microsoft Jet驱动程序,从DBF/DBase文件读取的最佳方法是什么?
我有一个列表,.dbf其中包含我想要更改为.csv文件的文件.我用excel手动打开它们并重新保存它们.csv,但这需要花费太多时间.
现在我创建了一个更改文件名的脚本,但是当我打开它时,它仍然是一个.dbf文件类型(虽然它被调用.csv).如何以文件类型也发生变化的方式重命名文件?
我的脚本使用(dbf和csv文件名列在单独的csv文件中):
IN = dbffile name
OUT = csvfile name
for output_line in lstRename:
shutil.copyfile(IN,OUT)
Run Code Online (Sandbox Code Playgroud) 语言: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();
Run Code Online (Sandbox Code Playgroud)
这会生成我可以在DbfViewer中打开的文件,但是,我无法在Excel 2007中打开它,也不能在我拥有的某些应用程序中使用.我可以使用DbfViwer手动将FoxPro .dbf转换为dbaseIII dbf,但我希望它是自动的.
有任何想法吗?
提前致谢
我正在尝试使用php连接dbf数据库.我尝试了几种不同的方式,没有运气.
PHP:5.3.8文件:C:\ xampp\htdocs\work\vcabdoc.dbf
创建数据源dbvfp,驱动程序C:\ Windows\system32\vfpodbc.dll
用过的 $odbc = odbc_connect ('dbvfp', '', '') or die('Could Not Connect to ODBC Database!');
Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Visual FoxPro Driver]File c:\xampp\htdocs\work\vcabdoc.dbf is not a database., SQL state S1000 in SQLConnect in C:\xampp\htdocs\WORK\odbc.php on line 5
Run Code Online (Sandbox Code Playgroud)
include('\xampp\php\PEAR\adodb\adodb.inc.php');
include_once('\xampp\php\PEAR\adodb\adodb-pager.inc.php');
session_start();
$db = ADONewConnection('vfp');
$dsn="Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=C:\\xampp\\htdocs\\work\\vcabdoc.dbf;Exclusive=No;";
$db->Connect($dsn) or die('nope');
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$query = "Select * from vcabdoc.dbf";
$rs = $db->Execute($query);
echo 'e';
while (!$rs->EOF) {
print_r($rs->fields);
$rs->MoveNext();
Notice: Trying to get property …Run Code Online (Sandbox Code Playgroud) 我有一个ado.net代码列表:
OleDbConnection oconn = new OleDbConnection();
// oconn.ConnectionString ="Driver={Microsoft Visual FoxPro Driver};Provider=vfpoledb.1;SourceType=DBF;SourceDB=" + pelna_sciezka + ";Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
oconn.ConnectionString = "Provider=vfpoledb.1;Data Source=" + pelna_sciezka + ";Collating Sequence=machine";
oconn.Open();
OleDbCommand ocmd = oconn.CreateCommand();
string na = TBNazwaKonta.Text.Replace("\n","");
na = na.Replace("\r","") ;
string ks2 = ks.Replace("\n","");
ks2 = ks2.Replace("\r", "");
OleDbCommand dbCmdNull = oconn.CreateCommand();
dbCmdNull.CommandText = "SET NULL OFF";
dbCmdNull.ExecuteNonQuery();
string zapytanie = @"insert into " + @pelna_sciezka + @" (rk, Na,Ks) values (0,'" + na + "','" + ks2 +"')";
ocmd.CommandText = …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的代码导入dbf文件.
但我收到一个错误:
'外部表不是预期的格式'
if (ofdDBF.ShowDialog()==DialogResult.OK)
{
string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ofdDBF.FileName.Substring(0, ofdDBF.FileName.LastIndexOf("\\")) + ";Extended Properties=dBASE IV;";
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
string cmd_string = "select * from " + ofdDBF.SafeFileName.Substring(0, ofdDBF.SafeFileName.IndexOf("."));
MessageBox.Show(cmd_string);
OleDbDataAdapter da = new OleDbDataAdapter(cmd_string, conn);
DataSet ds = new DataSet();
da.Fill(ds);
dgvImport.DataSource = ds.Tables[0];
}
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
我已经在这个问题上挣扎了一个多小时了.我正在尝试使用dbf表创建一个Sqlite数据库.当我创建一个从dbf派生的记录列表以用作Sqlite executemany语句的输入时,Sqlite表将显示为空.当我尝试以交互方式使用Python复制问题时,Sqlite执行成功.从dbf生成的列表在我运行时填充 - 所以问题在于executemany语句.
import sqlite3
from dbfpy import dbf
streets = dbf.Dbf("streets_sample.dbf")
conn = sqlite3.connect('navteq.db')
conn.execute('PRAGMA synchronous = OFF')
conn.execute('PRAGMA journal_mode = MEMORY')
conn.execute('DROP TABLE IF EXISTS STREETS')
conn.execute('''CREATE TABLE STREETS
(blink_id CHAR(8) PRIMARY KEY,
bst_name VARCHAR(39),
bst_nm_pref CHAR(2));''')
alink_id = []
ast_name = []
ast_nm_pref = []
for i in streets:
alink_id.append(i["LINK_ID"])
ast_name.append(i["ST_NAME"])
ast_nm_pref.append(i["ST_NM_PREF"])
streets_table = zip(alink_id, ast_name, ast_nm_pref)
conn.executemany("INSERT OR IGNORE INTO STREETS VALUES(?,?,?)", streets_table)
conn.close()
Run Code Online (Sandbox Code Playgroud) 我有一个文件夹,里面有一堆我想转换为 csv 的 dbf 文件。我曾尝试使用代码将扩展名从 .dbf 更改为 .csv,当我使用 Excel 时,这些文件可以正常打开,但是当我在 Pandas 中打开它们时,它们看起来像这样:
s\t?
0 NaN
1 1 176 1.58400000000e+005-3.385...
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,那些字符不会出现在真实文件中。
我应该如何正确读取 dbf 文件?
我刚接触锈并创建POC来将dbf文件转换为csv。我正在.dbf使用rust库dbase读取文件。
问题是,当我.dbf使用dbfview创建样本文件时,代码工作正常。但是,当我使用.dbf 实时使用的文件时。我收到以下错误。
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: InvalidFieldType('M')', src/libcore/result.rs:999:5
Run Code Online (Sandbox Code Playgroud)
这是我从给定链接使用的代码。
use dbase::FieldValue;
let records = dbase::read("tests/data/line.dbf").unwrap();
for record in records {
for (name, value) in record {
println!("{} -> {:?}", name, value);
match value {
FieldValue::Character(string) => println!("Got string: {}", string),
FieldValue::Numeric(value) => println!("Got numeric value of {}", value),
_ => {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这些^M显示的字符由附加windows。我该怎么办以解决此错误并成功读取文件。任何帮助都感激不尽。