gpt4 book ai didi

java - Jackcess ExportFilter 问题

转载 作者:行者123 更新时间:2023-11-30 08:24:18 24 4
gpt4 key购买 nike

我发现了一个名为 Jackcess 的很棒的库,它允许您使用 Microsoft Access 进行转换、解析创建等操作。

目标是转换,此代码成功完成。

导出时有一个过滤功能,可以在下面的文档链接中看到。目的是使用前 3 列,排除其余数据。

ExportUtil Documentation

应用过滤器对象不起作用,有没有人知道是否还有其他需要先实现的东西......*在这里挠头*

Export Filter Documentation

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();
}

}
}
}

最佳答案

基于我在单元测试代码中找到的内容 here ,以下示例代码似乎有效。它仅导出名为 [Members] 的表的前三 (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);
}
}
}

关于java - Jackcess ExportFilter 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23078954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com