Java 更新.xls或.xlsx文件中的数据

Java 更新.xls或.xlsx文件中的数据,java,xls,Java,Xls,我有一个很大的基于键值的列表记录,我使用了'CellReference',我只想知道其他任何有效的方法都是可能的,因为我觉得'CellReference'有更多的时间更新 数据如下所示:- Column/value B9 35 B8 63 B7 11 B6 36 B5 87 B14 3066 B13 5025 我的每对迭代代码是:-

我有一个很大的基于键值的列表记录,我使用了'CellReference',我只想知道其他任何有效的方法都是可能的,因为我觉得'CellReference'有更多的时间更新

数据如下所示:-

      Column/value

       B9     35
       B8     63
       B7     11
       B6     36
       B5     87
       B14    3066
       B13    5025
我的每对迭代代码是:-

        Map<String,Integer> result= getMap();//getting Column and value
        Iterator it = result.entrySet().iterator();
        CellReference reference=null;
            while (it.hasNext()) {
                Map.Entry pair = (Map.Entry) it.next();
                reference = new CellReference(pair.getKey().toString());
                Row row = spreadsheet.getRow(reference.getRow());
                Cell cell = null;
                if (row != null) {
                    cell = row.getCell(ref.getCol());
                }
            if (cell != null)
                cell.setCellValue(Double.parseDouble(pair.getValue().toString()));
        }
Map结果=getMap()//获取列和值
迭代器it=result.entrySet().Iterator();
CellReference=null;
while(it.hasNext()){
Map.Entry对=(Map.Entry)it.next();
reference=newcellreference(pair.getKey().toString());
Row-Row=电子表格.getRow(reference.getRow());
Cell=null;
如果(行!=null){
cell=row.getCell(ref.getCol());
}
如果(单元格!=null)
cell.setCellValue(Double.parseDouble(pair.getValue().toString());
}

这里的高效一词很不清楚,但您也可以尝试

          List<String> dataList = new ArrayList<String>();
    List<Integer> rowNo=new ArrayList<Integer>();
    List<Integer> colNo=new ArrayList<Integer>();
    int countRow=1;
    int countCol=1;
    try {

        FileInputStream fis = new FileInputStream(file);
    //  System.out.println("loadinggg !!!");
        HSSFWorkbook wb = new HSSFWorkbook(fis);
        HSSFSheet sheet = wb.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.iterator();

        while (rowIterator.hasNext()) {
            rowNo.add(countRow);
            Row row = rowIterator.next();
            Iterator<Cell> cellIterator = row.cellIterator();
            while (cellIterator.hasNext()) {
                cell = cellIterator.next();
                switch (cell.getCellType()) {
                case Cell.CELL_TYPE_STRING: {
                    dataList.add(cell.getStringCellValue());
                    cell.setCellValue("iterate through your own list here");
                }
                    break;
                }
            }
        }
List dataList=new ArrayList();
List rowNo=new ArrayList();
List colNo=new ArrayList();
int countRow=1;
int countCol=1;
试一试{
FileInputStream fis=新的FileInputStream(文件);
//System.out.println(“loadinggg!!!”;
HSSF工作手册wb=新的HSSF工作手册(fis);
HSSFSheet sheet=wb.getSheetAt(0);
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext()){
行号。添加(countRow);
行=行迭代器。下一步();
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext()){
cell=cellIterator.next();
开关(cell.getCellType()){
case Cell.Cell\u类型\u字符串:{
add(cell.getStringCellValue());
setCellValue(“在此处遍历您自己的列表”);
}
打破
}
}
}

您正在寻找的前景->其他方式可以有效。如果有效。我想要有效的方式吗?在某种意义上,在有效之前,还需要可读的平滑代码。谢谢,但这样,如果我尝试插入第n列的值,将迭代所有列。您可以使用位置作为参数,或者迭代位置集合并使用它!