-1

テンプレートの MS Excel ファイルをロードし、いくつかのセルにコンテンツを追加してから、ユーザーのブラウザを介してダウンロードする必要があるため、ファイルを開いたり保存したりできます。

過去にいくつかの MS Excel ワークブックを作成できましたが、これは少し違うようです。どうすればできますか?

前もって感謝します、

グルドヴィヒ

4

2 に答える 2

0

公式サイトに apache-poi に関する優れたチュートリアルがあります

final Workbook wb;
fileIn =new FileInputStream(fname);
wb = WorkbookFactory.create(fileIn);//opening a file
final Sheet sheet = wb.createsheet("Report");// create a sheet

次に、RowクラスとCellクラスを使用して、セルにコンテンツを追加します。

Row row;
Cell cell;
row=sheet.getRow(0); //get existing row
if(row==null)
row=sheet.createRow(0);//if row not present create row
cell=row.getCell(0);
if(cell==null)
cell=row.createCell(0);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(0);//set cell value

更新:ファイルにコンテンツを書き込む必要があることを忘れていました

fout=new FileOutputStream(fname);
wb.write(fout);

finallyfout をブロックで閉じます

if(fout!=null)
fout.close();

Excel ファイルの処理が完了したら、ダウンロード サーブレットを作成します。

File file=new File(fname);
FileInputStream fis=new FileInputStream(file);

        response.setHeader("Content-Length", String.valueOf(file.length()));
            response.setHeader("Content-Disposition",
                             "attachment;filename="+fname+".xlsm");
            ServletContext ctx = getServletContext();
            InputStream input = new BufferedInputStream(new FileInputStream(file), 1024 * 10);
            OutputStream output = new BufferedOutputStream(response.getOutputStream(), 1024 * 10);

            byte[] buffer = new byte[1024 * 10];
            int length;
            while ((length = input.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
        output.flush();
        output.close();
        input.close();
        fis.close();
于 2013-07-11T13:58:28.083 に答える
0

Excel はプレーンな plat CSV 形式をサポートしています。データを CSV に挿入するのが IMO の簡単な方法です。ドキュメントに CSV で処理できない複雑な形式がある場合は、Office オートメーションが最適です。VBA は十分に強力な言語であり、Excel シートを簡単に操作できます。HTH

于 2013-07-11T13:50:39.450 に答える