Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅使用基本体将元素动态添加到二维数组中_Java_Excel_Multidimensional Array_Apache Poi - Fatal编程技术网

Java 仅使用基本体将元素动态添加到二维数组中

Java 仅使用基本体将元素动态添加到二维数组中,java,excel,multidimensional-array,apache-poi,Java,Excel,Multidimensional Array,Apache Poi,使用下面的代码,我需要更改对象[][]bookcomments,以便将元素动态添加到bookcomments中,并进一步使用它将内容写入xlsx文件 问题:我在这里面临的问题是,我使用了bookComments=newobject[][{{name,email,phNo,skillset},}此行每次都在重新初始化我的2D数组 非常感谢你的帮助!!,先谢谢你 FileInputStream inputStream = new FileInputStream(new File(excelF

使用下面的代码,我需要更改对象[][]bookcomments,以便将元素动态添加到bookcomments中,并进一步使用它将内容写入xlsx文件

问题:我在这里面临的问题是,我使用了bookComments=newobject[][{{name,email,phNo,skillset},}此行每次都在重新初始化我的2D数组

非常感谢你的帮助!!,先谢谢你

    FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
        Workbook workbook = WorkbookFactory.create(inputStream);
        // headers of xlsx sheet - hard coded here
        Object[][] bookComments = { { "name", "email", "Mobile number", "skillset" }, };
        Sheet newSheet = workbook.createSheet("org2");
        Iterator it = empSheet.entrySet().iterator();
        Iterator itAddress = addressSheet.entrySet().iterator();
        Iterator itSkillSheet = skillSheet.entrySet().iterator();
        while(it.hasNext()) {
            Map.Entry eSheet = (Map.Entry)it.next();
            String email = null;
            String skillset = null;
            String name = (String) eSheet.getValue();
            String phNo = (String) eSheet.getKey();
            List<String> addressndEmail = addressSheet.get(phNo);
            email = addressndEmail.get(1);
            skillset = skillSheet.get(name);
            bookComments = new Object[][]{{name,email,phNo,skillset},};
            //ArrayUtils.addAll(bookComments, bookComment);

        }
FileInputStream-inputStream=newfileinputstream(新文件(excelFilePath));
工作簿=WorkbookFactory.create(inputStream);
//xlsx表的标题-此处硬编码
对象[][]bookComments={{{“姓名”、“电子邮件”、“手机号码”、“技能集”},};
工作表新闻表=工作簿.createSheet(“org2”);
迭代器it=empSheet.entrySet().Iterator();
迭代器itAddress=addressSheet.entrySet().Iterator();
迭代器itSkillSheet=skillSheet.entrySet().Iterator();
while(it.hasNext()){
Map.Entry eSheet=(Map.Entry)it.next();
字符串email=null;
字符串skillset=null;
字符串名称=(字符串)eSheet.getValue();
字符串phNo=(字符串)eSheet.getKey();
List addressndEmail=addressSheet.get(phNo);
email=addressndEmail.get(1);
skillset=skillSheet.get(名称);
bookComments=newobject[][{{{name,email,phNo,skillset},};
//ArrayUtils.addAll(bookComments,bookComment);
}

不,一旦创建了数组,就不能更改数组的大小。您要么必须将其分配得比您认为需要的更大,要么必须接受重新分配以增加其规模所需的开销。如果需要,您必须分配一个新的,并将数据从旧的复制到新的,否则您可以使用数组列表而不是数组

应该首先初始化数组的大小

String[][] bookComments = new String[intSize][intSize];
赋值(在while循环中使用类似“i”的增量变量)


我不知道您的要求,希望这能对您有所帮助

非常感谢您。这是一个好办法。这对我有用。祝您2018年新年快乐。
 i++;
 bookComments[i][0]=name;
 bookComments[i][1]=email;
 bookComments[i][2]=phNo;
 bookComments[i][3]=skillset;