【问题标题】:How can I stop the output excel file from getting corrupted?如何阻止输出 excel 文件损坏?
【发布时间】:2020-02-13 10:48:57
【问题描述】:

我正在从以下代码创建一个报告并使用石英调度程序对其进行调度,但是当它被保存时,它会被损坏..

public class GenerateReport implements Job{

    XSSFWorkbook report = new XSSFWorkbook();
    MyData myData = new MyData();

    public XSSFWorkbook createReport() {
        Map<Integer, String> data = new HashMap<Integer, String>();
        myData.setData(1652, "Abcs");
        myData.setData(1682, "ksaos");
        myData.setData(1152, "oass");
        myData.setData(1962, "Aajas");

        data = myData.getData();

        XSSFSheet sheet = report.createSheet("Employee data");
        XSSFCellStyle headerStyle = report.createCellStyle();

        XSSFFont headerFont = report.createFont();
        headerFont.setBold(true);
        headerStyle.setFont(headerFont);

        XSSFCell cell = null;
        XSSFRow row;
        int rowNum = 0;
        int colNum = 0;

        row = sheet.createRow(rowNum++);
        row.createCell(colNum++).setCellValue("ID");
        row.createCell(colNum).setCellValue("Name");


        for(Map.Entry<Integer, String> entry: data.entrySet()) {
            colNum = 0;
            row = sheet.createRow(rowNum++);
            cell = row.createCell(colNum++);
            cell.setCellValue(entry.getKey());

            cell = row.createCell(colNum);
            cell.setCellValue(entry.getValue());
        }


        return report;
    }

    public void saveReport() {
        XSSFWorkbook finalWorkbook = new XSSFWorkbook();
        try {
            FileOutputStream fos = new FileOutputStream("C:\\Users\\ra185586\\Desktop\\written.xlsx");
            finalWorkbook.write(fos);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.print("Report generated");
    }

    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException {

        createReport();
        saveReport();
        System.out.println(" and saved");

    }
}

你们能帮我解决,这样当报告保存时,它就不会损坏。 谢谢!

【问题讨论】:

    标签: java cron quartz


    【解决方案1】:

    您的方法 createReport() 返回 XSSFWorkbook。并且您需要将此 XSSFWorkbook 转移到 saveReport。

    -executesaveReport(createReport()); 上的两行更改

    -删除saveReportXSSFWorkbook finalWorkbook = new XSSFWorkbook();中的行

    -在saveReportsaveReport(XSSFWorkbook finalWorkbook)中添加参数

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多