Как я могу получить данные в файле .dbf с помощью С#?
Что я хочу сделать, так это прочитать данные в каждой строке (том же столбце), чтобы продолжить их обработку.
Спасибо.
Как я могу получить данные в файле .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]
для дальнейшей обработки.
Вы также можете проверить эту статью Загрузить DBF в DataTable
Я обнаружил, что принятый ответ не работает для меня, так как файлы .dbf, с которыми я работаю, вложены в иерархию каталогов, которая делает пути довольно длинными, что, к сожалению, вызывает OleDbCommand
объекта 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"]);
}
}