2014-04-15 28 views
2

我發現一個偉大的庫叫做Jackcess,允許您轉換,解析創建等與Microsoft Access。問題與Jackcess ExportFilter

目的是轉換,這個代碼的成功。

有一個過濾功能出口時,這可以在鏈接到下面的文檔中看到。目的是使用前3列,排除其餘數據。

ExportUtil Documentation

應用濾鏡對象不工作,沒有人知道是否還有別的東西,需要先... * ahcieved這裏抓我的頭*

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

     } 
    } 
} 
+0

感謝您的期待......這真的很奇怪!在'exportFile'函數中構造對象的天氣並不重要。 – RST

回答

3

根據我在單元測試代碼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); 
     } 
    } 
} 
+0

太棒了,非常感謝你!不是很清楚:)。希望這將有助於未來的人。 – RST