首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Jackcess ExportFilter有关的问题

与Jackcess ExportFilter有关的问题
EN

Stack Overflow用户
提问于 2014-04-15 08:58:28
回答 1查看 523关注 0票数 2

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

其目的是进行转换,此代码成功地完成了转换。

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

ExportUtil文档

应用filter对象不起作用,是否有人知道是否有其他事情需要优先考虑.*在这里挠我的头*

出口过滤文件

代码语言:javascript
复制
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();
            }

        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 16:16:46

根据我在单元测试代码这里中发现的内容,下面的示例代码似乎有效。它仅导出名为成员的表的前三(3)列。

代码语言:javascript
复制
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);
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23078954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档