Java 更新.xls或.xlsx文件中的数据
我有一个很大的基于键值的列表记录,我使用了'CellReference',我只想知道其他任何有效的方法都是可能的,因为我觉得'CellReference'有更多的时间更新 数据如下所示:-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 我的每对迭代代码是:-
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列的值,将迭代所有列。您可以使用位置作为参数,或者迭代位置集合并使用它!