c#中excel文件怎么转换为dbf文件

c#中excel文件怎么转换为dbf文件?wpf中datagrid中的数据怎么导出到dbf中?请求各位大神帮帮忙

使用System.Collections.Generic;
使用System.Text;
使用System.Data;
使用System.Data.OleDb;
使用System.IO;

命名空间TransDBFClass
{
public class TransDBFClass
{

///
///将Access数据库转换为Excel表格
/// </ summary>
/// Access数据库所有文件路径</ param>

公共无效AccessToExcel(字符串DbPath)

{
// OleDbConnection conn = new OleDbConnection(@“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = D:\ project \ TransDBF \ db.mdb;”);
OleDbConnection conn = new OleDbConnection(“Provider = Microsoft.Jet.OLEDB.4.0; Data Source =”+ DbPath +“;”);
尝试
{
conn.Open();

DataTable dt = conn.GetSchema(“Tables”); //获取ACCESS数据库中所有的表\查询\宏\窗体\模块

字符串p =“c:\ dbf”;

如果(!System.IO.Directory.Exists(p))
{
System.IO.Directory.CreateDirectory(p);
}
string [] vFiles = Directory.GetFiles(p);
foreach(vFile中的字符串vFile)
File.Delete(vFile);

for(int i = 0; i <dt.Rows.Count; i ++)
{
try
{
string tablename =“”;
if(dt.Rows [i] .ItemArray [3] .ToString()==“TABLE”)//判断是否是用户表
{
tablename = dt.Rows [i] .ItemArray [2] .ToString(); / /获取数据表名

}
//转换访问为dbf格式数据sql语句
// String sql =“SELECT * INTO [dBASE 5.0; Database = C:\ dbf;]。” + tablename +“.dbf FROM”+ tablename;
String sql =“SELECT * INTO [Excel 5.0; Database = C:\ dbf \ dbf.xls]”。+“[”+ tablename +“] FROM”+ tablename;
OleDbCommand cmd = new OleDbCommand(sql,conn);

cmd.ExecuteNonQuery();

}
赶上(异常前)
{
}
}
}
赶上(异常前)
{
File.AppendAllText(@ “C:\的1.txt”,ex.ToString());
}
finally
{
conn.Close();
}

}

///
///将已经转换了的Excel表转换为Dbf格式方法
/// </ summary>
public void ExcelToDbf()
{
OleDbConnection conn = new OleDbConnection(@“Provider = Microsoft.Jet.OLEDB。 4.0; Data Source = c:\ dbf \ dbf.xls; Extended Properties = Excel 8.0;“);
尝试
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object [] {null,null,null,“TABLE”});

for(int i = 0; i <dt.Rows.Count; i ++)
{
try
{
string tablename =“”;
if(dt.Rows [i] .ItemArray [3] .ToString()==“TABLE”)//判断是否是用户表
{

tablename = dt.Rows [i] .ItemArray [2] .ToString(); //获取数据表名

}
//转换Excel为dbf格式数据sql语句
String sql =“SELECT * INTO [dBASE 5.0; Database = C:\ dbf;]。DBF”+ i +“.dbf FROM”+ tablename;
// String sql =“SELECT * INTO [Excel 5.0; Database = C:\ dbf \ dbf.xls]”。+“[”+ tablename +“] FROM”+ tablename;
if(tablename.IndexOf('$')> = 0)
{
continue;
}
else
{
OleDbCommand cmd = new OleDbCommand(sql,conn);

cmd.ExecuteNonQuery();
}
}
catch(Exception ex)
{
}

}

}
catch(Exception ex)
{
File.AppendAllText(@“c:\ 2.txt”,ex.ToString());
}
finally
{
conn.Close();
}
}

}
}

还有一种带密码访问的

使用系统;
使用System.Collections.Generic;
使用System.Text;
使用System.Data;
使用System.Data.OleDb;
使用System.IO;

命名空间TransDBFClass
{
public class TransDBFClass
{

///
///将Access数据库转换为Excel表格
/// </ summary>
/// Access数据库所有文件路径</ param>

公共无效AccessToExcel(字符串DbPath)

{
// OleDbConnection conn = new OleDbConnection(@“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = D:\ project \ TransDBF \ db.mdb;”);
// OleDbConnection conn = new OleDbConnection(“Provider = Microsoft.Jet.OLEDB.4.0; Data Source =”+ DbPath +“; Persist Security Info = False; Jet OLEDB:Database Password = sa;”);
OleDbConnection conn = new OleDbConnection(“Provider = Microsoft.Jet.OLEDB.4.0; Data Source =”+ DbPath +“; Jet OLEDB:Database Password = sa;”);
尝试
{
conn.Open();

DataTable dt = conn.GetSchema(“Tables”); //获取ACCESS数据库中所有的表\查询\宏\窗体\模块

字符串p =“d:\ dbf”;

如果(!System.IO.Directory.Exists(p))
{
System.IO.Directory.CreateDirectory(p);
}
string [] vFiles = Directory.GetFiles(p);
foreach(vFile中的字符串vFile)
File.Delete(vFile);

for(int i = 0; i <dt.Rows.Count; i ++)
{
try
{
string tablename =“”;
if(dt.Rows [i] .ItemArray [3] .ToString()==“TABLE”)//判断是否是用户表
{
tablename = dt.Rows [i] .ItemArray [2] .ToString(); / /获取数据表名

}
//转换访问为dbf格式数据sql语句
// String sql =“SELECT * INTO [dBASE 5.0; Database = C:\ dbf;]。” + tablename +“.dbf FROM”+ tablename;
String sql =“SELECT * INTO [Excel 5.0; Database = d:\ dbf \ dbf.xls]”。+“[”+ tablename +“] FROM”+ tablename;
OleDbCommand cmd = new OleDbCommand(sql,conn);

cmd.ExecuteNonQuery();

}
赶上(异常前)
{
}
}
}
赶上(异常前)
{
File.AppendAllText(@ “C:\的1.txt”,ex.ToString());
}
finally
{
conn.Close();
}

}

///
///将已经转换了的Excel表转换为Dbf格式方法
/// </ summary>
public void ExcelToDbf()
{
OleDbConnection conn = new OleDbConnection(@“Provider = Microsoft.Jet.OLEDB。 4.0; Data Source = d:\ dbf \ dbf.xls; Extended Properties = Excel 8.0;“);
尝试
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object [] {null,null,null,“TABLE”});

for(int i = 0; i <dt.Rows.Count; i ++)
{
try
{
string tablename =“”;
if(dt.Rows [i] .ItemArray [3] .ToString()==“TABLE”)//判断是否是用户表
{

tablename = dt.Rows [i] .ItemArray [2] .ToString(); //获取数据表名

}
//转换Excel为dbf格式数据sql语句
String sql =“SELECT * INTO [dBASE 5.0; Database = d:\ dbf;]。DBF”+ i +“.dbf FROM”+ tablename;
// String sql =“SELECT * INTO [Excel 5.0; Database = C:\ dbf \ dbf.xls]”。+“[”+ tablename +“] FROM”+ tablename;
if(tablename.IndexOf('$')> = 0)
{
continue;
}
else
{
OleDbCommand cmd = new OleDbCommand(sql,conn);

cmd.ExecuteNonQuery();
}
}
catch(Exception ex)
{
}

}

}
catch(Exception ex)
{
File.AppendAllText(@“c:\ 2.txt”,ex.ToString());
}
finally
{
conn.Close();
}
}

}
}

dbf文件有好几种,从早期的dBase到后来的foxbase/foxpro,首先搞清楚你用的是什么格式的。
代码可以参考:
https://blog.csdn.net/dujiajiyiyi/article/details/53841398
用oledb这个驱动可以读写dbf文件。
excel转换dbf,无非就是读取excel文件,再循环插入到dbf里,而datagrid导出dbf,就是循环遍历datagrid的行,也一样循环写入dbf都是类似的。
读取excel也可以用类似上面的代码,只是驱动程序换成ace 12.0。

1, 将按照数据标准表做的EXCEL文件(注意做备份)打开,选中所有数据转化成文本格式(单元格—格式—文本—确定)

2在每列后边缘鼠标变成双击使每列展开保证每列中的数据完全可以看到

3,鼠标选取数据表内任意一数据(不可选取数据外的空白单元格)

4.点击文件——另存为,在弹出对话框另存为——保存位置选择要保存文件的位置,保存类型对话框内选择DBF4(Dbase IV)(*.dbf),文件名对话框填写自己想要的文件名,点击保存,再弹出的对话框根据提示内容点击确定 是 即可保存为所需dbf文件