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

好吧,基本上我试图写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的Y值,并在最后一个foreach中将X值写入Excel中。 我得到的是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; 

您正在每个versionsToGraphgraphics上创build相同的行,您正在擦除之前添加的内容。

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

你应该做的

 sheet.getRow(27+cant); 

在第一次迭代之后。

那么, wfCalls有多less个实例呢? 那么versionToGraph实例有versionToGraph等于15.6或15.9? 如果由于版本不匹配而导致不断增加多次,表格中的行可能会被粘贴到Excel中的第一个可见行中。 我会仔细检查你正在写的行号。