我的成绩单程序没有正确打印到excel文档

时间:2014-03-12 13:50:57

标签: java excel apache

我的成绩簿计划(我们放入成绩并找到平均值)在打印出excel文档时不能正常工作。只有学生1和标题打印中的平均值和学生1的平均值是0,没有测试成绩或任何东西。

这是我的代码:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

public class array {


public static final String Dabook = "wording.xls";



@SuppressWarnings("unused")
public static void main(String[] args) throws IOException {

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("wording.xls")); 
HSSFSheet sheet = wb.getSheet("Sheet1");

    int col = 0, num = 1;
    Row startRow = sheet.createRow(0);
    Cell startCell = startRow.createCell(0);
    int cellNumber = 0;
    double total = 0;

    double [ ] [ ] gridGrades = 
        { { 87.5, 61.0, 70.5 },
          { 90.0, 88.5, 87.5 },
          { 78.0, 65.5, 70.5 },
          { 80.0, 79.0, 81.5 },
          { 60.5, 55.5, 50.0 } };
    for (int colTest = 0; colTest < gridGrades[colTest].length + 1; colTest++) {
        for (int testNum = 0; testNum < gridGrades[colTest].length + 1;testNum++) {

            if (testNum == 1) {
                startCell.setCellValue("");
            }
        if (testNum == gridGrades[0].length) {
            startCell = startRow.createCell(testNum + 1);
            startCell.setCellValue("Average");
            startCell = startRow.createCell(testNum + 2);

        }
    }
    }
for (double grade[] : gridGrades) {
    startRow = sheet.createRow(num);
    startCell = startRow.createCell(cellNumber);
    startCell.setCellValue("Student " + num);

    for (int poop = 0; poop < gridGrades[num - 1].length; poop++) {
        if (poop == gridGrades[0].length - 1) {
            double average = total / gridGrades[num - 1].length;

            startCell = startRow.createCell(poop + 2);
            DecimalFormat df = new DecimalFormat("###.##");
            Double averageDouble = Double.parseDouble(df
                    .format(average));
            startCell.setCellValue(averageDouble);
            startCell = startRow.createCell(poop + 3);

            total = 0;
        }
        for (int Scott = 0; startRow.getCell(Scott) != null; Scott++) {
            sheet.autoSizeColumn(Scott);
        }

        FileOutputStream output = new FileOutputStream("wording.xls");
        wb.write(output);
        output.close();
    }

}
{       
        System.out.printf("                 Test %d:      Test %d:   Test %d:    Average:%n", num, num+1, num+2);
    for(double[] grade : gridGrades) { 
        double average = (grade[col] + grade[col+1] + grade[col+2])/3;
    System.out.printf("Student %d         %.2f        %.2f     %.2f       %.2f  %n", num, grade[col], grade[col+1], grade[col+2], average);
    num++;


  }  
} 

} }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

  • 将写入块放在循环之外,只需要编写一次。
  • as @ user902383表示你需要在outter循环中使用num++语句。
  • 您从不在单元格中设置成绩,也不在“测试N”标题中设置成绩。
  • 在单元格中设置成绩时,如@ user902383,将此值添加到total

希望这有帮助。