【问题标题】:reading excel rows properly正确读取 excel 行
【发布时间】:2016-02-25 00:24:33
【问题描述】:

我正在尝试从 .xlsx 文件中读取多行数据。控制台中的输出将所有值显示在另一个之下。

问题是它们没有像在源 Excel 工作表中那样显示在表格中。

我的 excel 文件是 .xlsx,所以我使用 XSSF POI api 进行编码。 它包含两列(名称和分数),总共 5 行。

控制台输出如下所示

Name
Score
TOM
1
DICK
2
HARRY
3
JERRY
4

我希望它像这样打印:

Name            Score
TOM              1
DICK             2
HARRY            3
JERRY            4

代码:

package gmailExcel;

import java.io.FileInputStream;
import java.io.IOException;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadXl {

    public static void main(String[] args) throws IOException {

 // Locate xl file.
            FileInputStream fis = new FileInputStream
            ("File location on local host");

 // Load file, workbook and sheet.
            XSSFWorkbook wb = new XSSFWorkbook(fis);
            XSSFSheet ws = wb.getSheet("sheetName");


 // Declare row and cell variable.      
            XSSFRow row;
            XSSFCell cells;

 // Get row and column count.
            int rowCount = ws.getLastRowNum();
            int colCount = ws.getRow(0).getLastCellNum();

 // Iterate over rows and columns.
            for(int r = 0; r < rowCount; r++) {
                row = ws.getRow(r);

                    for(int c = 0; c < colCount; c++) {
                         cells  = row.getCell(c);



 // Output the values from Excel sheet.                 
            String cellval = cells.toString();
            System.out.println(cellval);
                        }

                    }

                }
            }

【问题讨论】:

  • 在您的问题中,所需的输出与控制台输出相同。是不是打错字了?
  • 不是错字,这不是我输入问题的方式,所以就这样吧。当前控制台输出:名称分数 TOM 1 DICK 2 HARRY 3 JERRY 4
  • 不是错字,这不是我输入问题的方式,所以就这样吧。当前的控制台输出以很长的方式一个接一个地打印所有值,我希望它以类似表格的方式打印。我会尽量附上截图。
  • 你的意思是他们是在每一行打印一个还是在同一行打印一个?
  • 我想我可能会给你一个答案。

标签: java automation xssf


【解决方案1】:

问题在于您的嵌套 for 循环。在每次迭代中,您都在打印带有换行符的值。您要做的是仅在我假设的第二列中打印单元格后打印换行符。

这可以通过在嵌套循环外打印换行符来完成,如下所示:

for (int r = 0; r < rowCount; r++) {
    for (int c = 0; c < colCount; c++) {
        cells = row.getCell(c);
        String cellval = cells.toString();
        System.out.print(" | " + cellval);   //New line IS NOT printed
    }
    System.out.println(" |");                //New line IS printed
}

【讨论】:

  • @HarshenduBhardwaj 没问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多