原文地址:
https://blog.csdn.net/xzknet/article/details/18045761
首先加入maven依赖
<dependency>
<groupId>com.github.albfernandez</groupId>
<artifactId>javadbf</artifactId>
<version>1.9.4</version>
</dependency>
package dbf;
import java.io.FileInputStream;
import java.io.InputStream;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFReader;
public class readDBF {
public static void readDBF(String path) {
InputStream fis = null;
try {
// 读取文件的输入流
fis = new FileInputStream(path);
// 根据输入流初始化一个DBFReader实例,用来读取DBF文件信息
DBFReader reader = new DBFReader(fis);
// 调用DBFReader对实例方法得到path文件中字段的个数
int fieldsCount = reader.getFieldCount();
// 取出字段信息
for (int i = 0; i < fieldsCount; i++) {
DBFField field = reader.getField(i);
System.out.println(field.getName());
}
Object[] rowValues;
// 一条条取出path文件中记录
while ((rowValues = reader.nextRecord()) != null) {
for (int i = 0; i < rowValues.length; i++) {
System.out.println(rowValues[i]);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (Exception e) {
}
}
}
public static void main(String[] args) {
readDBF.readDBF("c:/到货明细表.DBF");
}
}
public void getDbf(HttpServletResponse response) {
String fileName = "表名.dbf";
response.setContentType("application/x-dbf");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + CodecUtil.encode(fileName));
try {
// 定义DBF文件字段
DBFField[] fields = new DBFField[3];
// 分别定义各个字段信息,setFieldName和setName作用相同,
// 只是setFieldName已经不建议使用
fields[0] = new DBFField();
// fields[0].setFieldName("emp_code");
fields[0].setName("ch_name");
fields[0].setDataType(DBFField.FIELD_TYPE_C);
fields[0].setFieldLength(10);
fields[1] = new DBFField();
// fields[1].setFieldName("emp_name");
fields[1].setName("en_name");
fields[1].setDataType(DBFField.FIELD_TYPE_C);
fields[1].setFieldLength(20);
fields[2] = new DBFField();
// fields[2].setFieldName("salary");
fields[2].setName("salary");
fields[2].setDataType(DBFField.FIELD_TYPE_N);
fields[2].setFieldLength(12);
fields[2].setDecimalCount(2);
// 定义DBFWriter实例用来写DBF文件
DBFWriter writer = new DBFWriter(response.getOutputStream());
// 把字段信息写入DBFWriter实例,即定义表结构
writer.setFields(fields);
// 一条条的写入记录
for(int i = 0;i < 100;i ++){
Object[] rowData = new Object[3];
rowData[0] = "小万";
rowData[1] = "XiaoWan";
rowData[2] = new Double(5000.00);
writer.addRecord(rowData);
}
// 写入数据
writer.write();
if(writer != null){
writer.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
用excel即可打开dbf文件