Java 如何读取csv并创建每条线的地图列表?

Java 如何读取csv并创建每条线的地图列表?,java,csv,opencsv,Java,Csv,Opencsv,我有一个Java类来自动化web上的一些行为,我唯一的问题是现在我需要使用csv中的数据,而不是静态数据 例如: 这是我的自动化类中的操作之一: WebElement supplierAddressField = driver.findElement(By.id("FieldaddressOfSupplierLine")); supplierAddressField.sendKeys("hollywood blvd 34"); 所以现在,我想在.sendKeys(csvLine

我有一个Java类来自动化web上的一些行为,我唯一的问题是现在我需要使用csv中的数据,而不是静态数据

例如:

这是我的自动化类中的操作之一:

WebElement supplierAddressField = driver.findElement(By.id("FieldaddressOfSupplierLine"));
        supplierAddressField.sendKeys("hollywood blvd 34");
所以现在,我想在
.sendKeys(csvLineMap.get(“supplier address”))的每一行上迭代,而不是静态的“supplier address”值

因为在每一行中,我不需要所有的标题信息,这就是为什么我认为最好只创建一个地图列表,每个地图键将是csv的标题,值将是特定行中该标题的值

这是csv的结构:

请帮我弄清楚…谢谢

Apache Commons CSV 对于你想要的,我建议你看看。其中一个示例与您正在尝试的示例非常接近

Reader in = new FileReader("path/to/file.csv");
Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
for (CSVRecord record : records) {
    String lastName = record.get("Last Name");
    String firstName = record.get("First Name");
}
Reader in=newfilereader(“path/to/file.csv”);
Iterable records=CSVFormat.EXCEL.parse(in);
用于(CSVRecord记录:记录){
字符串lastName=record.get(“姓氏”);
String firstName=record.get(“firstName”);
}

好的,对于您想要的内容来说,这可能过于复杂,但我总是以excel文件的形式打开csv,因为这样您就可以运行列了。拾取任何列的代码如下所示:

                Workbook w = Workbook.getWorkbook(inputWorkbook);                      
                Sheet sheet = w.getSheet(0);
                nom = sheet.getRows();
                String[][] SheetArray = new String [2][nom];  
                   // change the first number to the number of columns you want, 
                   // or pick up the number same as you did with rows   


                Cell cell;           

                  // GETS DATA FROM SHEET AND RUNS THROUGH WHOLE LOOP BELOW FOR EACH REFERENCE            
                 for(int j =0;j<sheet.getRows();j++) // cycles through rows and loads into 2d array
                    { // start 6
                     cell = sheet.getCell(0, j); <- your column number here
                     cellcont = cell.getContents();                        
                      SheetArray[0][j] = cellcont;

                       // repeat the above block for each column you want

                        } // end 6
Workbook w=Workbook.getWorkbook(inputWorkbook);
图纸=w.getSheet(0);
nom=sheet.getRows();
字符串[][]SheetArray=新字符串[2][nom];
//将第一个数字更改为所需的列数,
//或者选择与行相同的编号
细胞;
//从工作表中获取数据,并针对每个引用运行下面的整个循环
对于(int j=0;j),您可以按任意顺序仅解析感兴趣的字段:

    CsvParserSettings parserSettings = new CsvParserSettings();

    // Let's extract headers
    parserSettings.setHeaderExtractionEnabled(true);

    parserSettings.selectFields("Field 5", "Field 1");

    //Rows will come organized according to your field selection
    List<String[]> allRows = parser.parseAll("path/to/file.csv");
CsvParserSettings parserSettings=new CsvParserSettings();
//让我们提取标题
parserSettings.setHeaderExtractionEnabled(true);
选择字段(“字段5”、“字段1”);
//行将根据您的字段选择进行组织
List allRows=parser.parseAll(“path/to/file.csv”);
如果愿意,可以轻松获得包含所有列的值的映射:

    CsvParserSettings parserSettings = new CsvParserSettings();
    // Let's extract headers
    parserSettings.setHeaderExtractionEnabled(true);

    // To get the values of all columns, use a column processor
    ColumnProcessor rowProcessor = new ColumnProcessor();
    parserSettings.setRowProcessor(rowProcessor);

    CsvParser parser = new CsvParser(parserSettings);

    //This will kick in our column processor
    parser.parse(new FileReader("path/to/file.csv"));

    //Finally, we can get the column values:
    Map<String, List<String>> columnValues = rowProcessor.getColumnValuesAsMapOfNames();
CsvParserSettings parserSettings=new CsvParserSettings();
//让我们提取标题
parserSettings.setHeaderExtractionEnabled(true);
//要获取所有列的值,请使用列处理器
ColumnProcessor rowProcessor=新ColumnProcessor();
setRowProcessor(rowProcessor);
CsvParser parser=新的CsvParser(parserSettings);
//这将对我们的专栏处理器产生影响
parser.parse(新的文件阅读器(“path/to/file.csv”);
//最后,我们可以得到列值:
Map columnValues=rowProcessor.getColumnValuesAsMapOfNames();
看一看,它比任何其他解析器都要快,您可以做更多的事情,比如转换值和生成JavaBean


披露:我是这个库的作者。它是开源和免费的(Apache V2.0许可证).

我认为应该对其进行编辑。虽然问题本身是关于“如何读取csv并在地图中放置值”的,但问题中充斥着WebDriver的详细信息。如果您阅读问题的其余部分,您会发现这并不重要,我使用了一些selenium代码只是为了向大家展示示例。您是否在使用java/selenium代码打开csv,然后提取值并将其放入数组/映射?@Louise我有所有的selenium代码,现在我只想寻找java代码来解析我的csv并创建一个映射列表,这样我就可以在csv行之间迭代并使用它的信息