我目前正在研究Java应用程序,该应用程序读取Access文件并使用收集的数据构建Jtable模型。我以前对Excel文件进行过相同的操作,但是当我尝试对Jackcess进行处理时,它略有不同,并且遇到了一些问号。
到目前为止我的工作:
public class AccessModel{
public DefaultTableModel getAccessModel() throws IOException {
Database db = DatabaseBuilder.open(new File("MyFile.accdb"));
Vector<String> columnNames = new Vector<String>();
Vector<String> vector = new Vector<String>();
Vector<Vector<String>> data = new Vector<Vector<String>>();
StringBuilder output = new StringBuilder();
Table table = db.getTable("Table1");
for (Column column : table.getColumns()) { // get the table column names
output.append(column.getName());
output.append("\n");
columnNames.add(column.getName());
}
for (Column column : table.getColumns()) { // get the column rows and values
vector.add(column.getRowValue(table.getNextRow()).toString());
}
data.add(vector);
// return the model to Gui
DefaultTableModel accessModel = new DefaultTableModel(data, columnNames);
return accessModel;
}
}
如您所见,此方法只会迭代第一行,然后退出循环。由于连续12个小时的工作,我要么看不见一个绝对的解决方案,要么我做错了什么。
我偶然发现了一些使用Iterator的好办法,但我无法把握住它。有什么建议吗?还是我应该保持目前的思路?
JTable
(用于查看的值存储在中XxxTableModel
,在您使用的情况下DefaultTableModel
)是行基Object
,
TableColumn
(值存储在中TableColumnModel
)将行划分为列
您将需要创建两个对象,
Vector<String> columnNames
(仅一行)来自的列标识符 Table table = db.getTable("Table1");
Table table = db.getTable("Table1");
,以填补二维Vector<Vector<Object>> data = new Vector<Vector<Object>>();
通过Vector<Object> vector = new Vector<Object>();
,公告第一次。代码行insode循环必须为vector = new Vector<Object>();
,您必须创建一个新Vector
代码,否则将添加相同的rown_times,最后一个代码行应为data.add(vector)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句