前言
最近的项目经常与DBF打交道,所以如何简洁的解析DBF文件就非常的关键了,
这里介绍一种不用安装驱动,只需要借助第三方类库FastDBF读取DBF文件到DataTable的方法
说明
项目中必须引用FastDBF
using SocialExplorer.IO.FastDBF;
代码实现
/// <summary>
/// 从DBF读取文件到DataTable
/// </summary>
/// <param name="fileName">DBF的完整路径:如E:\1.dbf</param>
/// <returns></returns>
public static DataTable DbfToDataTable(string fileName)
{
try
{
//返回的结果集
DataTable dt = new DataTable();
//获取一个DBF文件对象
DbfFile dbf = new DbfFile(Encoding.Default);
dbf.Open(fileName, FileMode.Open);
//创建DataTable的结构(列名)
DbfHeader dh = dbf.Header;
for (int index = 0; index < dh.ColumnCount; index++)
{
dt.Columns.Add(dh[index].Name);
}
//加载数据到DataTable里
int i = 0;
while (dbf.Read(i) != null)
{
//获取一行
DbfRecord record = dbf.Read(i);
//将改行数据放到DataRow里
DataRow dr = dt.NewRow();
Object[] objs = new Object[record.ColumnCount];
for (int index = 0; index < record.ColumnCount; index++)
{
objs[index] = record[index];
}
dr.ItemArray = objs;
dt.Rows.Add(dr);
i++;
}
dbf.Close();
return dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}