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

标签 java excel apache-poi xls

好吧,基本上我正在尝试在迭代时同时写入 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;

最佳答案

您在 versionsToGraph 的每次迭代中创建同一行,您正在删除之前添加的内容。

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

你应该这样做

sheet.getRow(27+cant);

第一次迭代后。

关于java - 为什么用 Java 编写 Excel 时会发生这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7745105/

相关文章:

Excel 聚合函数 : #VALUE error when applying boolean array multiplication

php - 在 PHP 中从 XML 值创建 XML?

java - 无法使用 Apache POI 设置作者和标题

java - XSSFWorkbook、XSSFSheet 不起作用 - NetBeans 8.0.2

java - Jackson - 使用注释将第一个数组成员绑定(bind)到对象

java - Datanucleus RDBMS JPA 带依赖项的 jar

java - 如何向散点图添加比例尺或 Axis ?

java - 我想用Java读取两个文件,一个.xlsx和一个.csv,并希望根据文件的扩展名在控制台上显示内容

VBA有一个子运行另一个子

java - 如何使用 Apache-POI 获取 Excel 工作表的默认列宽?