如何使用 c# 获取 .dbf 文件中的数据?
我想要做的是读取每一行(同一列)中的数据以进一步处理它们。
谢谢。
您可以创建到 dbf 文件的连接字符串,然后使用 OleDb,您可以填充数据集,例如:
string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=directoryPath;Extended Properties=dBASE IV;User ID=Admin;Password=;";
using (OleDbConnection con = new OleDbConnection(constr))
{
var sql = "select * from " + fileName;
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
DataSet ds = new DataSet(); ;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(ds);
}
稍后您可以使用ds.Tables[0]
进行进一步处理。
您也可以查看这篇文章Load a DBF into a DataTable
我发现接受的答案对我不起作用,因为我正在使用的 .dbf 文件嵌套在目录层次结构中,这使得路径相当长,可悲的是,这会导致OleDbCommand
对象抛出。
我找到了一个整洁的小库,只需要一个文件路径就可以工作。这是一个改编自其 GitHub 页面上的示例的小示例:
var file = "C:\\Path\\To\\File.dbf";
using (var dbfDataReader = new DbfDataReader(file))
{
while (dbfDataReader.Read())
{
var foo = Convert.ToString(dbfDataReader["FOO"]);
var bar = Convert.ToInt32(dbfDataReader["BAR"]);
}
}