Получить данные в файле .dbf с помощью С#

Как я могу получить данные в файле .dbf с помощью С#?

Что я хочу сделать, так это прочитать данные в каждой строке (том же столбце), чтобы продолжить их обработку.

Спасибо.

Ответ 1

Вы можете создать строку подключения к файлу 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

Ответ 2

Я обнаружил, что принятый ответ не работает для меня, так как файлы .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"]);
    }
}