Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何读取Excel工作表的内容,并将其存储在以column1为键、其余列为值的地图中 我有一张excel表格,如下所示: 第1列|第2列|第3列|第4列 A | B | C | D A1 | B1 | C1 | D1_Java_Apache Poi - Fatal编程技术网

Java 如何读取Excel工作表的内容,并将其存储在以column1为键、其余列为值的地图中 我有一张excel表格,如下所示: 第1列|第2列|第3列|第4列 A | B | C | D A1 | B1 | C1 | D1

Java 如何读取Excel工作表的内容,并将其存储在以column1为键、其余列为值的地图中 我有一张excel表格,如下所示: 第1列|第2列|第3列|第4列 A | B | C | D A1 | B1 | C1 | D1,java,apache-poi,Java,Apache Poi,如何读取此excel并将值存储在地图中,其中a为键,B、C、D为该键的值 请在下面查找我的代码,该代码未按预期工作 while (rowIterator.hasNext()) { ArrayList<String> columnlist = new ArrayList<String>(); List excelValues = new ArrayList();

如何读取此excel并将值存储在地图中,其中a为键,B、C、D为该键的值

请在下面查找我的代码,该代码未按预期工作

while (rowIterator.hasNext())
            {
                ArrayList<String> columnlist = new ArrayList<String>();
                List excelValues = new ArrayList();
                String key = StringUtils.EMPTY;


                Row row = rowIterator.next();
                Iterator<Cell> cellIterator = row.cellIterator();                   
                while (cellIterator.hasNext())
                {
                    Cell cell = cellIterator.next();
                    if(row.getRowNum() > 0)
                    { 
                        if(cell.getColumnIndex()==0){

                            key = StringUtils.upperCase(cell.getStringCellValue());
                        }
                        else if(cell.getColumnIndex()==1)
                        { 
                            tempPar = cell.getStringCellValue();
                            excelValues.add(tempPar);
                        }
                        if(tempPar.equalsIgnoreCase("Include")){

                         if(cell.getColumnIndex()==2)
                        { 
                            // Responsible for reading comma separated values from cell in excel sheet. 
                            StringTokenizer str= new StringTokenizer(cell.getStringCellValue(),COMMA);

                            while (str.hasMoreElements()) {
                                columnlist.add(StringUtils.upperCase(str.nextElement().toString()));
                            }
                            excelValues.add(columnlist.equals("") ? "" : columnlist);
                        }
                        else if(cell.getColumnIndex()==3){
                            ignorePK = cell.getStringCellValue();
                            ignorePK.add(cell.getStringCellValue());
                            excelValues.add(ignorePK);
                        }
                        }
                        map.put(key, excelValues);
                    }
while(roweiterator.hasNext())
{
ArrayList columnlist=新建ArrayList();
List excelValues=new ArrayList();
String key=StringUtils.EMPTY;
行=行迭代器。下一步();
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell=cellIterator.next();
if(row.getRowNum()>0)
{ 
if(cell.getColumnIndex()=0){
key=StringUtils.upperCase(cell.getStringCellValue());
}
else if(cell.getColumnIndex()==1)
{ 
tempPar=cell.getStringCellValue();
excelValues.add(tempPar);
}
if(临时同等信号情况(“包括”)){
if(cell.getColumnIndex()==2)
{ 
//负责从excel工作表中的单元格中读取逗号分隔的值。
StringTokenizer str=新的StringTokenizer(cell.getStringCellValue(),逗号);
while(str.hasMoreElements()){
add(StringUtils.upperCase(str.nextElement().toString());
}
excelValues.add(columnlist.equals(“”?“):columnlist);
}
else if(cell.getColumnIndex()==3){
ignorePK=cell.getStringCellValue();
ignorePK.add(cell.getStringCellValue());
excelValues.add(ignorePK);
}
}
map.put(键、值);
}

我已经编写了读取excel并使用Apache Poi将其存储到数据库的代码。您可以引用它并修改自己的代码

 try {
             ExcelController ex = new ExcelController();
             File f1 = ex.convert(file);
             //     FileInputStream file = new FileInputStream(new File("E://Imp/Details.xlsx"));
             XSSFWorkbook workbook = new XSSFWorkbook(f1);
             XSSFSheet sheet = workbook.getSheetAt(0);
             Iterator<Row> rowIterator = sheet.iterator();
             rowIterator.next();

             //    while (rowIterator.hasNext()) {
             for(int i=1;i<=51;i++){
                 Row row = rowIterator.next();
                 //For each row, iterate through each columns
                 Iterator<Cell> cellIterator = row.cellIterator();

                 while (cellIterator.hasNext()) {

                     Cell cell = cellIterator.next();
                     //        System.out.println("cell.getStringCellValue().length() "+cell.getStringCellValue().length());
                     //   if( cell.getStringCellValue().length()>0){
                     List list = new ArrayList();
                     //       This will change all Cell Types to String
                     cell.setCellType(Cell.CELL_TYPE_STRING);
                     switch (cell.getCellType()) {
                         case Cell.CELL_TYPE_BOOLEAN:
                             String bstring = "" + cell.getBooleanCellValue();
                             list.add(cell.getBooleanCellValue());
                             System.out.println("boolean===>>>" + cell.getBooleanCellValue() + "\t");
                             break;
                         case Cell.CELL_TYPE_NUMERIC:
                             String Nstring = "" + cell.getNumericCellValue();
                             list.add(Nstring);
                             break;
                         case Cell.CELL_TYPE_STRING:


                             list.add(cell.getStringCellValue());


                             break;
                     }
//                   }else {
//                       break;
                     //        }


                 }
试试看{
ExcelController ex=新的ExcelController();
文件f1=ex.convert(文件);
//FileInputStream文件=新的FileInputStream(新文件(“E://Imp/Details.xlsx”);
XSSF工作簿=新XSSF工作簿(f1);
XSSFSheet sheet=workbook.getSheetAt(0);
迭代器rowIterator=sheet.Iterator();
roweiterator.next();
//while(roweiterator.hasNext()){
对于(int i=1;i0){
列表=新的ArrayList();
//这会将所有单元格类型更改为字符串
cell.setCellType(cell.cell\u TYPE\u字符串);
开关(cell.getCellType()){
case Cell.Cell\u类型\u布尔值:
字符串bstring=”“+cell.getBooleanCellValue();
添加(cell.getBooleanCellValue());
System.out.println(“boolean===>>>”+cell.getBooleanCellValue()+“\t”);
打破
case Cell.Cell\u类型\u数值:
字符串Nstring=”“+cell.getNumericCellValue();
list.add(Nstring);
打破
case Cell.Cell\u类型\u字符串:
添加(cell.getStringCellValue());
打破
}
//}其他{
//中断;
//        }
}
在你得到上面的值后,只需把它推到你创建的地图上