Строка заголовка файла экспорта имеет дополнительную строку

Я хочу экспортировать odsfile вот так

но я действительно получил экспорт это (заголовок имеет дополнительное слово)

вот мой код, спасибо за любые предложения

@RequestMapping(value = "/export", method = RequestMethod.POST)
public @ResponseBody void exportOds(Long questionId,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    VoteQuestion q = voteManager.getQuestion(questionId);

    TableModel model = new DefaultTableModel(1000,1000);
    File file = File.createTempFile("temp", ".ods");

    model.setValueAt(q.getQuestion(), 0, 0);
    int row = 2;
    for (VoteOption opt : q.getOptions()) {
        model.setValueAt(opt.getDescription(), row, 0);
        model.setValueAt(opt.getVotes(), row++, 1);
    }
    SpreadSheet.createEmpty(model).saveAs(file);

    String fileName = "投票結果";
    String encodeFileName = FilenameEncoder.getInstance(request)
            .encodeFileName(fileName + ".ods");
    response.setHeader("Content-Disposition",
            "attachment; filename=" + encodeFileName);

    FileInputStream in = null;
    OutputStream out = null;
    try {
        out = response.getOutputStream();
        in = new FileInputStream(file);
        IOUtils.copy(in, out);
    } finally {
        IOUtils.closeQuietly(in);
        IOUtils.closeQuietly(out);
        file.deleteOnExit();
    }
}

1 ответ

Решается этим кодом

@RequestMapping(value = "/export", method = RequestMethod.POST)
public @ResponseBody void exportOds(Long questionId,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    VoteQuestion q = voteManager.getQuestion(questionId);

    String[] columName = new String[1000];
    columName[0] = q.getQuestion();
    for(int i = 1 ;i<1000;i++){
        columName[i] = "";
    }

    TableModel model = new DefaultTableModel(columName,1000);
    File file = File.createTempFile("temp", ".ods");

    int row = 1;
    for (VoteOption opt : q.getOptions()) {
        model.setValueAt(opt.getDescription(), row, 0);
        model.setValueAt(opt.getVotes(), row++, 1);
    }
    SpreadSheet.createEmpty(model).saveAs(file);

    String fileName = "投票結果";
    String encodeFileName = FilenameEncoder.getInstance(request)
            .encodeFileName(fileName + ".ods");
    response.setHeader("Content-Disposition",
            "attachment; filename=" + encodeFileName);

    FileInputStream in = null;
    OutputStream out = null;
    try {
        out = response.getOutputStream();
        in = new FileInputStream(file);
        IOUtils.copy(in, out);
    } finally {
        IOUtils.closeQuietly(in);
        IOUtils.closeQuietly(out);
        file.deleteOnExit();
    }
}
Другие вопросы по тегам