本人初学者,前两天做一个将列表内容导出到excel表格操作,在生成excel表格各列数据的时候无法自动填充各列内容。后来,只好改为手动设置每行列数!    代码如下:(其中,recordsize为共有多少条记录; CustRelTo userTo 为实体类;auCustList 为列表内容)     for (int i = 1; i <= recordsize; i++) {  
            HSSFRow fundRow = sheet.createRow(fundStartRowNo + i);   //fundStartRowNo起始行号,初始值为0;
            HSSFCell stkCell0 = fundRow.createCell(0);            stkCell0.setCellValue(i);  //第0列为序号列
            if (i == recordsize) {
                stkCell0.setCellStyle(stockPoolStkCellStyle.getStyleRight());
            } else {
                stkCell0.setCellStyle(stockPoolStkCellStyle.getStyleLeft());
            }
            //为 序号列 填充(1、2、3.........)
            CustRelTo userTo = null;
            if (auCustList != null) {
             userTo = auCustList.get(i - 1);
            }
            //手动创建每条记录的各列,每条记录共有4列
            HSSFCell cellDep=fundRow.createCell(1);
            HSSFCell cellCustNo=fundRow.createCell(2);
            HSSFCell cellCustName=fundRow.createCell(3);
            HSSFCell cellAccount=fundRow.createCell(4);
             //为各列填充内容
            cellDep.setCellValue(new HSSFRichTextString(userTo.getUserBranchName()));
            cellCustNo.setCellValue(new HSSFRichTextString(userTo.getCustNo()));
            cellCustName.setCellValue(new HSSFRichTextString(userTo.getCustName()));
            cellAccount.setCellValue(new HSSFRichTextString(userTo.getBrokerAccount()));
        }
---------------------------------------------------------------------------------------
      至此,功能实现是正常的。但,按照常理,应该是用for循环嵌套来自动实现 4各列的内容填充。
     
       //recordLength=6条记录
       //USER_EXP.length=4每条记录有4列的内容        for (int i = 1; i <= recordLength; i++) {
            HSSFRow fundRow = sheet.createRow(fundStartRowNo + i);
      /*
*   序号列的生成填充
*
*/
            for(int j = 1; j <= USER_EXP.length; j++){
//自动进行单元格生成和内容填充
    }
        }
小弟在网上多方查询,未发现可以参考的帖子。请给位 大哥 帮忙 看看 (//自动进行单元格生成和内容填充)中应该如何来操作。                 

解决方案 »

  1.   

    额 不明白你想做什么 
    你都可以手动设置 也就是你只需要一个FOR循环的次数
    你将要导出的数据对象集合的大小放在那里就行了
    例如: 你要导出一个班级学生的信息,学生信息在一个ARRAYLIST里面
    FOR(int i=0;i<arr.size;i++){
       Student userTo = (Student)arr.get(i);
      HSSFCell cellDep=fundRow.createCell(1);
      HSSFCell cellCustNo=fundRow.createCell(2);
      HSSFCell cellCustName=fundRow.createCell(3);
      HSSFCell cellAccount=fundRow.createCell(4);
     
      cellDep.setCellValue(new HSSFRichTextString(userTo.getUserBranchName()));
      cellCustNo.setCellValue(new HSSFRichTextString(userTo.getCustNo()));
      cellCustName.setCellValue(new HSSFRichTextString(userTo.getCustName()));
      cellAccount.setCellValue(new HSSFRichTextString(userTo.getBrokerAccount()));  
    }当  cellDep.setCellValue(new HSSFRichTextString(userTo.getUserBranchName())); 加上非空判断如果是空 赋值“”就好了