繁体   English   中英

读取值从 excel 单行多列

[英]reading values form excel with single row with multiple columns

如何使用 excel 读取具有多个值的行

例如

参考 测试用例1 测试用例2 测试用例3
姓名 山姆 内存 凸轮
年龄 20 25 30
性别 F
地方 地点1 地点2 地点 3

我必须阅读

testcase1.name=sam
testcase2.name=ram
testcase3.name=cam 

和年龄

我该怎么做...任何帮助将不胜感激

本教程可能有助于使用: https://www.javatpoint.com/how-to-read-excel-file-in-java

基本上,您使用 Apache POI 库来解析文件的值,为每一行生成迭代器,然后为每一行中的每个单元格生成迭代器,并以这种方式处理数据。

在您的情况下,导入相关类后,代码片段将如下所示:

//Input Data for Class
FileInputStream in = new FileInputStream(new File("<File Location>.xls(x)"));

// Create an Apache POI Workbook reading the file
HSSFWorkbook workbook = new HSSFWorkbook(in);

// Use the Workbook to make a sheet
HSSFSheet sheet = workbook.getSheetAt(0); // Replace 0 with your sheet number

List<Row> rowsList = new ArrayList<Row>();
sheet.iterator().forEachRemaining(actualList::add); // Gets a list of all the rows

int i = -1;
String[] names = new String[3];

for (Cell cell : rowsList[1]) { // Start at second row
    if (i++ > 0) {
        names[i] = cell.getStringCellValue();
    }
}

testcase1.name = names[0];
testcase2.name = names[1];
testcase3.name = names[2];

i = -1;
int[] ages = new int[3];

for (Cell cell : rowsList[2]) { // Start at Third Row
    if (i++ > 0) {
        ages[i] = (int) cell.getNumericCellValue();
    }
}

testcase1.name = ages[0];
testcase2.name = ages[1];
testcase3.name = ages[2];

使用 apache poi 库。

首先,您必须阅读 java object 中的 Excel 文件

        FileInputStream myFile = new FileInputStream(new File(FILE_NAME));
        Workbook myWorkbook = new XSSFWorkbook(myFile);
        Sheet datatypeSheet = myWorkbook.getSheetAt(0); //read the first sheet
        Iterator<Row> iterator = datatypeSheet.iterator();

然后您可以遍历每一行,并且在每一行中您可以读取每个单元格(又名列值)

    List<TestCase> myList = new ArrayList();
    int rowNum = 0;
    while (iterator.hasNext()) {

                Row row = iterator.next();
                int columnsSize = row.getLastCellNum();

                //create all objects
                if(rowNum == 0) {
                  for (int i = 1; i <= columnsSize; i++) {
                     myList.add(new TestCase());
                  }
                } else {
                   //initialize property in each row for all objects
                     for (int i = 1; i <= columnsSize; i++) {
                        TestCase testCase = myList.get(i-1);

int cellType = row.getCell(i).getCellType();
switch(cellType) {
    case Cell.CELL_TYPE_NUMERIC:
       testCase.properties.add(new Property(row.getCell(0).getStringCellValue(), 
       String.valueOf(row.getCell(i).getNumericCellValue()));
        break;
    case Cell.CELL_TYPE_STRING:
        testCase.properties.add(new Property(row.getCell(0).getStringCellValue(), 
        row.getCell(i).getStringCellValue());
        break;
}
                  }
               }

             rowNum++;     
             }
System.out.println(myList);

   

  

    public class TestCase {
    public List<Property> properties;

    public TestCase(){
    this.properties = new ArrayList();
                     }
    }

    public class Property {
    String name;
    String value;

     public Property(String name, String value){
     this.name = name;
     this.value = value;
    }
        }

*编辑:for循环必须有<=条件而不是<

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM