如何填写Excel的某些行中爪哇一个JTable?

编程入门 行业动态 更新时间:2024-10-11 21:31:04
本文介绍了如何填写Excel的某些行中爪哇一个JTable?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在从Excel导入数据文件到一个Java 的JTable 。我可以导入所有的表,但我想只导入的部分的行。这是code我使用导入的表:

I'm working on importing data from an Excel file into a Java JTable. I can import all the sheet, but I want to import only some rows. This is the code I'm using to import the sheet:

private void remplirtable(JTable table, int numfeuil,String s) { Workbook wb; File fichier = new File(s); try { //création de la table et importation du fichier wb = Workbook.getWorkbook(fichier); Sheet sheet = wb.getSheet(numfeuil); String[] columnsnames=new String[sheet.getColumns()]; DefaultTableModel model = new DefaultTableModel(); //Remplir la table désignée table.setModel(model); int colonnes = sheet.getColumns(); int lignes = sheet.getRows(); Object data[] = new Object[colonnes]; for (int i=0; i<lignes; i++){ for (int j=0; j<colonnes; j++){ if (i==0) { //Component c=super.prepareRenderer(renderer, j, i); model.addColumn(sheet.getCell(j,i).getContents()); } //System.out.println(sheet.getCell(j,i).getContents()); if(i>=1) data[j]=sheet.getCell(j,i).getContents(); }model.addRow(data); }model.removeRow(0); } catch (BiffException | IOException e) { } }

为了只导入行(3,4,5),我用这个code。 A 是我们股票的行号的数组:

In order to import only the rows (3,4,5), I used this code. A is the array in which we stock the rows numbers:

private void RemplirPostes(JTable table, int numfeuil,String s,int[] A) { Workbook wb; File fichier = new File(s); try { //création de la table et importation du fichier wb = Workbook.getWorkbook(fichier); Sheet sheet = wb.getSheet(numfeuil); DefaultTableModel model = new DefaultTableModel(); //Remplir la table désignée table.setModel(model); int colonnes = sheet.getColumns(); Object data[] = new Object[colonnes]; for(int k=0;k<A.length;k++) { for (int j=0; j<colonnes; j++){ if (A[k]==0) { //Component c=super.prepareRenderer(renderer, j, i); model.addColumn(sheet.getCell(j,A[k]).getContents()); } //System.out.println(sheet.getCell(j,i).getContents()); if(A[k]>=1) data[j]=sheet.getCell(j,A[k]).getContents(); }model.addRow(data); } model.removeRow(0); } catch (BiffException | IOException e) { } }

而这一切是行不通的。

And all this doesn't work.

推荐答案

从这个完整的例如,下面开始$ C $ç从 MIN_ROW 创建具有列指定数量的表 MAX_ROW ,包容性的。

Starting from this complete example, the following code creates a table having the indicated number of COLUMNS from MIN_ROW to MAX_ROW, inclusive.

private static final int COLUMNS = 4; private static final int MIN_ROW = 3; private static final int MAX_ROW = 5; … DataFormatter format = new DataFormatter(); DefaultTableModel model = new DefaultTableModel(0, COLUMNS); for (Row row : sheet) { if (row.getRowNum() >= MIN_ROW && row.getRowNum() <= MAX_ROW) { Vector rowData = new Vector(); for (Cell cell : row) { rowData.add(format.formatCellValue(cell)); } model.addRow(rowData); } } … JFrame f = new JFrame("TableTest"); f.add(new JTable(model));

附录:看你目前的做法比较接近,你可能要适应非连续行。它可以帮助更换一个您的数组列表与LT;整数GT; 。然后,您可以使用包含()到位以上predicate的:

Addendum: Looking closer at your current approach, you may want to accommodate non-contiguous rows. It may help to replace your array with a List<Integer>. You can then use contains() in place of the predicate above:

if (a.contains(row.getRowNum()) {…}

附录:评价公式,你可以传递一个 FormulaEvaluator 到 formatCellValue()

FormulaEvaluator eval = book.getCreationHelper().createFormulaEvaluator(); … rowData.add(format.formatCellValue(cell, eval));

更多推荐

如何填写Excel的某些行中爪哇一个JTable?

本文发布于:2023-05-28 00:44:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/308176.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爪哇   Excel   JTable

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!