当前位置: 首页 > 面试题库 >

如何将值从Excel存储到Java中的某些集合

马绪
2023-03-14
问题内容

我有一个如下的Excel文件,

**Method Name**            **Status Code**     **user**    **password**
getLoggedinUserDetails        400              anto          test
createRequisition             400              mayank       hexgen
excelMDM                      400              xxxxx        hexgen
createOrder                   400              yyyyy        hexgen
confirmOrder                  400              zzzzz        hexgen

我想将上述详细信息保存一些,collection以便我可以访问details by providing username and get the details like Method Name, Status code,and password.

我尝试过这样的事情,只能存储 method name and status code

package com.hexgen.tools;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

public class TestMethodsDetails {
    public Map<String, Integer> getKnownGoodMap(String filePath) {
        String key = "";
        int value = 0;
        //filePath="TestMethodDetails.xls";
        Map<String, Integer> knownGoodMap = new LinkedHashMap<String, Integer>();
        try {

            FileInputStream file = new FileInputStream(new File(filePath));

            // Get the workbook instance for XLS file
            HSSFWorkbook workbook = new HSSFWorkbook(file);

            // Get first sheet from the workbook
            HSSFSheet sheet = workbook.getSheetAt(0);

            // Iterate through each rows from first sheet
            Iterator<Row> rowIterator = sheet.iterator();
            while (rowIterator.hasNext()) {
                Row row = rowIterator.next();

                // For each row, iterate through each columns
                Iterator<Cell> cellIterator = row.cellIterator();
                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();

                    switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_NUMERIC:
                        value = (int) cell.getNumericCellValue();
                        break;
                    case Cell.CELL_TYPE_STRING:
                        key = cell.getStringCellValue();
                        break;
                    }

                    if (key != null && value != Integer.MIN_VALUE) {
                        knownGoodMap.put(key, value);
                        key = null;
                        value = Integer.MIN_VALUE;
                    }
                }
            }
            file.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return knownGoodMap;
    }
    public static void main(String[] args) {
        TestMethodsDetails details = new TestMethodsDetails();
        System.out.println("Method Details : "+details.getKnownGoodMap("TestMethodDetails.xls"));
    }
}

上面的代码显示以下内容:

Method Details : {Method Name=0, getLoggedinUserDetails=400, createRequisition=400, excelMDM=400, createOrder=400, confirmOrder=400}

to be frank i really don't know what mechanism to use to store these details so that i enables easy access for me to process details, the user name and password will be different, i have given here some user and password for sample only

请帮助我做到这一点。


问题答案:

您应该使用面向对象的方法来创建实体。创建一个代表您的excel数据行的类,假设它称为Records,然后将该类的对象放在以用户名作为键的Hashmap中。这是示例类:

public class Record {

    private String methodName;
    private String statusCode;
    private String user;
    private String password;

    public String getMethodName() {
        return methodName;
    }

    public void setMethodName(String methodName) {
        this.methodName = methodName;
    }

    public String getStatusCode() {
        return statusCode;
    }

    public void setStatusCode(String statusCode) {
        this.statusCode = statusCode;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

定义一个集合以将记录存储

Map<String, Record> recordsMap = new <String, Record>HashMap();

读取excel文件,为每行创建一条记录,然后保存在此集合中。从地图中检索记录应该容易,快捷。



 类似资料:
  • 我正在读取一个CSV文件,其中包含有关山丘的数据。我可以从文件中读取数据,并将列标题与6个字段相关联。当前我的输出打印如下: 但我试图获得如下输出: 因此,从技术上讲,我试图实现的是,从我的集合中选择3个值,它们实际上在地图中,并且只打印出名称和高度。 我的当前代码是: 我认为我必须使用另一个for循环,并从集合中选择3个值,然后在最后的print语句中使用“.getName”和“.getHeig

  • 我是c语言的新手。我只有一些基本的知识,比如复制和粘贴。这意味着我的c语言不好。对不起我的英语。现在是我的问题。我有一个记事本。txt文件。它包含一些参数和我从其他程序获得的值。 对此的描述。txt文件:[单位可选]name\u of\u参数=值 便条簿。txt文件: 没有机会获得此输出的其他样式(.txt文件)。 除此之外,我还有一个带有随机行和列的excel工作表。第一行是\u参数的名称,如-

  • 问题内容: 如何将arrayList存储到Java中的数组中? 问题答案: 那取决于你想要什么: 现在,如果要将列表存储在数组中,则可以执行以下操作之一: 但是,如果要将列表 项 放在数组中,请执行以下一项操作: 参考:

  • 我想问一下,如何从excel文件中复制某些类似的数据行,并根据特定的列名保存到另一个excel文件中?我想根据第1列找到类似的单词,即“name”(输入文件中有3列,分别是name、number和number),然后将整行复制到另一个excel文件中。接下来,我还希望在缺少的行上添加'zzzz | 0 | 0',使行的数量相同。 最终,将有3个不同的excel文件。所有文件都有相同数量的行,在这种

  • 假设我有下面的。我想组合价格列和值列,以便所有价格都在一列中,所有卷都在另一列中。我还想要标识价格级别的第三列。例如,、和。 这就是最终的df应该是什么样子: 我尝试使用,我认为几乎有正确的答案。 这就是熔融时部分df的样子: 上面的问题是,数量和价格在同一列中,但我希望它们在两个单独的列中。 我使用了正确的函数吗?