Java 如何读取Excel工作表的内容,并将其存储在以column1为键、其余列为值的地图中 我有一张excel表格,如下所示: 第1列|第2列|第3列|第4列 A | B | C | D A1 | B1 | C1 | D1
如何读取此excel并将值存储在地图中,其中a为键,B、C、D为该键的值 请在下面查找我的代码,该代码未按预期工作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();
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());
打破
}
//}其他{
//中断;
// }
}
在你得到上面的值后,只需把它推到你创建的地图上