导入DBF文件方法 |
您所在的位置:网站首页 › excel如何导入dbf文件 › 导入DBF文件方法 |
报表制作完成后,不仅能够实现展现及打印的功能,还能够根据用户的不同需求,以不同的形式导出。润乾为用户提供的导出方式有Excel,Word,PDF,Text,Xml,方便了用户的使用。可是在实际需求中用到的文件不仅仅限于这五种格式,如果需要到处其他格式的怎么办呢?润乾也提供了丰富的api来实现一些特殊的需求,比如导出dbf文件。 考虑到dbf文件是一种数据库文件,每一行都有相同的字段数,所以只要求能将行列矩阵式的报表(不存在合并行合并列)导出。在有些情况下DBF文件会更合适的。 JavaDBF是Java的阅读和写入dbf文件的开源的接口。下面将介绍下如何将JavaDBF与润乾的API结合来实现此问题。
首先准备一张行列矩阵式的报表如下图。
浏览数据:
接下来需要调用润乾的API将包括表头在内的单元格的数据读取出来,再通过javaDBF的写入接口写入到.dbf文件中: Context cxt = new Context(); // 构建报表引擎计算环境 // …………………….. //其它辅助代码,例如往报表引擎传递参数和宏,传递数据库连接参数等,见后面的介绍 ReportDefine rd = null; try { rd = (ReportDefine) ReportUtils.read(“e:/dbf.raq”); catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Engine engine = new Engine(rd, cxt); // 构造报表引擎 IReport iReport = engine.calc(); // 运算报表
此时通过润乾api计算出来的iReport对象已经是一个包含了计算后的所有单元格数据的对象.下面调用com.linuxense.javadbf中的DBFField和DBFWriter类来进行dbf文件的设定以及写入: DBFField fields[] = new DBFField[3];//首先定义一个3列的域 //逐列设定其属性 fields[0] = new DBFField(); fields[0].setFieldName(iReport.getCell(1, (short) 1).getValue() .toString());//调用润乾的api读取表头位置的数据将其设置成列名 fields[0].setDataType(DBFField.FIELD_TYPE_C);//设置其类型 fields[0].setFieldLength(10);//设置其长度
fields[1] = new DBFField(); fields[1].setFieldName(iReport.getCell(1, (short) 2).getValue() .toString()); fields[1].setDataType(DBFField.FIELD_TYPE_C); fields[1].setFieldLength(20);
fields[2] = new DBFField(); fields[2].setFieldName(iReport.getCell(1, (short) 3).getValue() .toString()); fields[2].setDataType(DBFField.FIELD_TYPE_N); fields[2].setFieldLength(12); fields[2].setDecimalCount(2); 设定完dbf文件的表头类型后,开始将iReport对象中的数据根据定义好的规则写入: DBFWriter writer = new DBFWriter(); writer.setFields(fields); //便利已算好的iReport对象(由于第一行表头之前已经插入过,故从第二行开始) for (int i = 2; i //获取每个单元格的值 INormalCell iCell = iReport.getCell(i, (short) j); //根据不同列的判断将string和double类型分别写入不同dbf列中 rowData[j - 1] = j != 3 ? iCell.getValue() : Double .parseDouble(iCell.getValue().toString()); } writer.addRecord(rowData);
} 最后将其写入dbf文件中: FileOutputStream fos = new FileOutputStream(“e://dbfTest.dbf”); writer.write(fos); fos.close();
使用数据库导入该dbf文件测试,成功导入到数据库中:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |