Jackcess ExportFilter 的问题
Posted
技术标签:
【中文标题】Jackcess ExportFilter 的问题【英文标题】:Issue with Jackcess ExportFilter 【发布时间】:2014-04-15 08:58:28 【问题描述】:我发现了一个很棒的库,叫做 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();
【问题讨论】:
感谢您的关注……真的很奇怪!在exportFile
函数中构造对象并不重要。
【参考方案1】:
根据我在单元测试代码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);
【讨论】:
太棒了,非常感谢!不是很清楚:)。希望这对将来的某人有所帮助。以上是关于Jackcess ExportFilter 的问题的主要内容,如果未能解决你的问题,请参考以下文章