java 导出dbf格式

java 导出dbf 格式

demo地址:https://github.com/woyaochengweidaniu/javaEE/tree/master/file-handling
参考文章:http://priede.bf.lu.lv/ftp/pub/DatuBazes/DBF/javadbf/javadbf-tutorial.html
依赖
<!-- https://mvnrepository.com/artifact/com.github.albfernandez/javadbf -->
        <dependency>
            <groupId>com.github.albfernandez</groupId>
            <artifactId>javadbf</artifactId>
            <version>1.9.4</version>
        </dependency>
导出dbf
package com.example.easyexcel.dbf;

import com.linuxense.javadbf.DBFDataType;
import com.linuxense.javadbf.DBFException;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFWriter;

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;

/**
 * javadbf包   导入导出
 *
 * 参考文章:http://priede.bf.lu.lv/ftp/pub/DatuBazes/DBF/javadbf/javadbf-tutorial.html
 * @author lcm
 */
public class DBFWriterTest {

    public static void main( String args[])
            throws DBFException, IOException {

        // let us create field definitions first
        // we will go for 3 fields
        //
        DBFField fields[] = new DBFField[ 3];

        fields[0] = new DBFField();
        fields[0].setName( "emp_code");
        fields[0].setType(DBFDataType.CHARACTER);
        fields[0].setLength( 10);

        fields[1] = new DBFField();
        fields[1].setName( "emp_name");

        fields[1].setType(DBFDataType.CHARACTER);
        fields[1].setLength( 20);

        fields[2] = new DBFField();
        fields[2].setName( "salary");
        fields[2].setType(DBFDataType.FLOATING_POINT );
        fields[2].setLength( 12);
        fields[2].setDecimalCount( 2);

        FileOutputStream fos = new FileOutputStream("C:\\temp\\test.dbf");
        DBFWriter writer = new DBFWriter(fos, Charset.defaultCharset());
        writer.setFields( fields);

        // now populate DBFWriter
        //

        Object[] rowData = new Object[3];
        rowData[0] = "1000";
        rowData[1] = "John";
        rowData[2] = 5000.00;

        writer.addRecord( rowData);

        rowData = new Object[3];
        rowData[0] = "1001";
        rowData[1] = "Lalit";
        rowData[2] = 3400.00;

        writer.addRecord( rowData);

        rowData = new Object[3];
        rowData[0] = "1002";
        rowData[1] = "Rohit";
        rowData[2] = 7350.00;

        writer.addRecord( rowData);
        writer.close();
        fos.close();
    }
}

导入dbf
package com.example.easyexcel.dbf;

import com.linuxense.javadbf.DBFException;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFReader;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class JavaDBFReaderTest {

    public static void main( String args[]) {

        try {

            // create a DBFReader object
            //
            InputStream inputStream  = new FileInputStream( args[ 0]); // take dbf file as program argument
            DBFReader reader = new DBFReader( inputStream);

            // get the field count if you want for some reasons like the following
            //
            int numberOfFields = reader.getFieldCount();

            // use this count to fetch all field information
            // if required
            //
            for( int i=0; i<numberOfFields; i++) {

                DBFField field = reader.getField( i);

                // do something with it if you want
                // refer the JavaDoc API reference for more details
                //
                System.out.println( field.getName());
            }

            // Now, lets us start reading the rows
            //
            Object []rowObjects;

            while( (rowObjects = reader.nextRecord()) != null) {

                for( int i=0; i<rowObjects.length; i++) {

                    System.out.println( rowObjects[i]);
                }
            }

            // By now, we have itereated through all of the rows

            inputStream.close();
        }
        catch( DBFException e) {

            System.out.println( e.getMessage());
        }
        catch( IOException e) {

            System.out.println( e.getMessage());
        }
    }
}

转载于:https://www.cnblogs.com/java-hardly-road/p/11158191.html

### 使用Java导出DBF文件 为了实现通过Java导出DBF文件的功能,可以考虑使用一些专门处理dBASE数据文件(即DBF文件)的第三方。以下是几种常见的方法: #### 方法一:使用JDBC连接到DBF文件并操作数据表 由于DBF是一种关系型数据格式,因此可以通过JDBC驱动程序来访问它。具体来说,`HXTT DBF JDBC Driver`是一个能够读写DBF文件的强大工具。 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class DbfExporter { public static void main(String[] args) throws Exception { String url = "jdbc:dbf:/path/to/dbffile"; Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement(); // 创建新表或向现有表插入记录 stmt.execute("CREATE TABLE sample (id INTEGER, name VARCHAR(50))"); stmt.close(); conn.close(); } } ``` 这种方法依赖于特定厂商提供的JDBC驱动器[^3]。 #### 方法二:采用开源项目JTDS作为中间件 另一个选项是利用名为`jtds`的轻量级纯Java,它可以用来创建、修改以及查询DBF文件中的内容而无需安装额外软件。 然而需要注意的是,在实际应用中更推荐寻找更加活跃维护和支持更好的替代方案,因为该项目已经停止更新多年[^4]。 #### 方法三:借助Apache Commons CSV配合其他组件转换成DBF 如果目标仅仅是生成简单的固定宽度文本文件而不是严格意义上的.dbf,则可以直接编写CSV并通过某些实用函数将其转储为目标结构。对于真正意义上完整的.dbf支持,可能还需要引入像`SimpleFlatFile`这样的辅助包来进行最终格式化工作。 ```java // 这里仅展示CSV部分;完整流程还需加入更多步骤完成整个过程。 Writer writer = Files.newBufferedWriter(Paths.get("output.csv")); try (CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader("ID", "Name"))) { csvPrinter.printRecord(1,"John Doe"); } finally { writer.close(); } ``` 上述代码片段展示了如何使用Apache Commons CSV API写出带有标题行的数据集[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值