java - 在Java中,在编写Excel时为什么会发生这种情况

  显示原文与译文双语对照的内容
0 0

实际上,我正在尝试同时写 3列和N 个行,同时迭代。 问题是,3列的2列是用值编写的。 即使它们出现在 System.out. println ( ) 中,也不是在Excel中编写的。 下面是代码:


for(int i = 0; i <versionsToGraph.length; i++) { 
 List<WsCallEntry> wfCalls = allCalls.get(i);
 int cant = -1;
 if(!wfCalls.isEmpty()) { 
 for (WsCallEntry wsCallEntry : wfCalls) { 
 String x = wsCallEntry.getKey();
 int y = wsCallEntry.getValue();
 cant++;
 if(versionsToGraph[i].equals("15.6")) {
 System.out.println(x +"" + y +" will be added.");
 XSSFSheet sheet = (XSSFSheet) wb.getSheetAt(0); 
 XSSFRow row = sheet.createRow(27+cant); 

 XSSFCell celly = row.createCell(10); 

 celly.setCellValue(y);
 }else{
 if(versionsToGraph[i].equals("15.9")) {

 System.out.println(x +"" + y +" will be added.");
 XSSFSheet sheet = (XSSFSheet) wb.getSheetAt(0); 
 XSSFRow row = sheet.createRow(27+cant); 

 XSSFCell celly = row.createCell(11); 

 celly.setCellValue(y);
 }
 } 


 xValues.add(x); 


 } 


 Collections.sort(xValues, new StringComparator());

 } 
 } 
 ArrayList<String> newList = eliminarRepetidos(xValues); 
 int cant = 0;
 for (String newlist : newList) {
 String x = newlist;
 XSSFSheet sheet = (XSSFSheet) wb.getSheetAt(0); 
 XSSFRow row = sheet.createRow(27+cant); 
 XSSFCell cellx = row.createCell(9); 
 cellx.setCellValue(x);
 cant++;
 } 
 }

因这里,它应该在代码的这一部分中添加,15.6,15.9值和最后一个foreach写入Excel中的X 值。 我得到的是X 值和 15.9个Y 值。 我没有得到的是 15.6? : (


import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.ss.usermodel.WorkbookFactory; 
import org.apache.poi.xssf.usermodel.XSSFCell; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import org.apache.poi.xssf.usermodel.XSSFSheet;

时间: 原作者:

0 0

你在每次 versionsToGraph 迭代中创建相同的行,你正在清除以前添加的。


XSSFRow row = sheet.createRow(27+cant);

你应该做


sheet.getRow(27+cant);

第一次迭代之后。

原作者:
0 0

那么,wfCalls 有多少个实例? 这些 versionToGraph的实例中有多少等于 15.6或者 15.9? 如果由于版本不匹配而多次增加 cant,则表中的行可能会在Excel中粘贴第一个可见行。 我会再检查你写的那行号码。

原作者:
...