如何修改代码,以便只打印单元格E和F?

我在java上编写了一个小程序来读取excel,但是如何修改它只能打印特定的单元格呢?

public class Read { public static void main(String [] args) throws Exception { File f = new File ("/users/Me/Documents/Test.xls"); Workbook wb = Workbook.getWorkbook(f); Sheet s = wb.getSheet(0); int row = s.getRows(); int col = s.getColumns(); for(int i = 0; i<row;i++) { for(int j = 0; j<col;j++) { Cell c = s.getCell(j,i); System.out.print(c.getContents()+"\t"); } } System.out.println(""); } } 

如果你想打印每个'E'单元格,那么你会想要删除列循环,但保持行循环,硬编码'E'的索引到getCell(x,y)函数。 因为我们知道'E'是字母表中的索引4,所以如果我们使用代码,

 public static void main(String [] args) throws Exception{ File f = new File ("/users/Me/Documents/Test.xls"); Workbook wb = Workbook.getWorkbook(f); Sheet s = wb.getSheet(0); int row = s.getRows(); int col = s.getColumns(); for(int i = 0; i<row;i++){ Cell c = s.getCell(4,i); System.out.print(c.getContents()+"\t"); } System.out.println(""); } 

只有'E'列中的列将被打印。

对于你的后续问题,如何检查一个单元格的内容是否比另一个单元格的内容更大…这里的主要问题是你正在比较两个string,为了检查一个值是否大于另一个值,你必须parsing将string转换为int(或其他数据types)。 在java中,这可以通过转换或使用数据types函数给予我们的方法来完成。 在下面的例子中,我们比较了单元格C1和E1。

  Cell c = s.getCell(2,1); Cell e = s.getCell(4,1); if(Integer.parseInt(c.getContents()) > Integer.parseInt(e.getContents())){ //Do something } 

如果你的意思是你只想打印特定的单元格,那么你可以写一个方法来指定你的条件,如果一个单元格遇到它,那么只打印它,否则继续。

 public class Read { public static void main(String [] args) throws Exception{ File f = new File ("/users/Me/Documents/Test.xls"); Workbook wb = Workbook.getWorkbook(f); Sheet s = wb.getSheet(0); int row = s.getRows(); int col = s.getColumns(); for(int i = 0; i<row;i++) for(int j = 0; j<col;j++){ Cell c = s.getCell(j,i); if(!doesCellMeetMyCondition(c)) continue; System.out.print(c.getContents()+"\t"); } System.out.println(""); } private boolean doesCellMeetMyCondition(Cell c) { // Check your condition and return true or false. } }