我发现了一个名为Jackcess的很好的库,它允许您使用Microsoft转换、解析创建等等。
其目的是进行转换,此代码成功地完成了转换。
导出时有一个过滤器功能,这可以在下面的文档链接上看到。目的是使用前3列,排除其余的数据。
ExportUtil文档
应用filter对象不起作用,是否有人知道是否有其他事情需要优先考虑.*在这里挠我的头*
出口过滤文件
public void db_dump(String mdbFile, String outputDir) {
File file = new File("/Users/testUser/Downloads/example.mdb");
if(file != null) {
File outDir = new File("/Users/testUser/Desktop/output123");
boolean success = outDir.mkdir();
if (success) {
Database db = null;
try {
db = DatabaseBuilder.open(file);
Table t = db.getTable("MappedCHTCP");
List<Column> cols = new List<Column>()
@Override methods for list ommited .... size(), contains(), etc
System.out.println(t.getColumns());
// cols.add(0,t.getColumn("word"));
for (Column c : t.getColumns()) {
if((c != null) && (c.getColumnIndex() < 3)) {
System.out.println(c.getName());
cols.add(c);
}
}
SimpleExportFilter ef = new SimpleExportFilter(); //THIS IS THE PROBLEM
ef.filterColumns(cols);
File csvFile = new File(outDir+File.separator+"MappedCHTCP.csv");
ExportUtil.exportFile(db, "MappedCHTCP", csvFile, false, null, '"',ef); //NOT ABLE TO APPLY FILTER
} catch (IOException e) {
e.printStackTrace();
}
}
}
}发布于 2014-04-16 16:16:46
根据我在单元测试代码这里中发现的内容,下面的示例代码似乎有效。它仅导出名为成员的表的前三(3)列。
package jackcessTest;
import java.io.File;
import java.util.*;
import com.healthmarketscience.jackcess.*;
import com.healthmarketscience.jackcess.util.ExportFilter;
import com.healthmarketscience.jackcess.util.ExportUtil;
import com.healthmarketscience.jackcess.util.SimpleExportFilter;
public class JackcessTest {
public static void main(String[] args) {
try (Database db = DatabaseBuilder.open(
new File("C:/Users/Public/mdbTest.mdb"))) {
ExportFilter eFilter = new SimpleExportFilter() {
private List<Column> _cols = new ArrayList<Column>();
private int _colIdx = 0;
@Override
public List<Column> filterColumns(List<Column> columns) {
for (Column c : columns) {
if (_colIdx++ < 3) _cols.add(c);
}
return _cols;
}
};
ExportUtil.exportFile(
db,
"Members",
new File("C:/Users/Public/zzzJdump.csv"),
true,
",",
'"',
eFilter);
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}https://stackoverflow.com/questions/23078954
复制相似问题