Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何加载MS Excel文件、添加内容并发送给用户?_Java_Apache Poi_Export To Excel - Fatal编程技术网

Java 如何加载MS Excel文件、添加内容并发送给用户?

Java 如何加载MS Excel文件、添加内容并发送给用户?,java,apache-poi,export-to-excel,Java,Apache Poi,Export To Excel,我需要加载一个MS Excel模板文件,将内容添加到一些单元格中,然后通过用户的浏览器下载,以便用户可以打开和/或保存该文件 在过去,我设法创建了一些MS Excel工作簿,但这似乎有些不同。我怎么做呢 提前感谢, gtludwigExcel支持纯平台CSV格式,在我看来,将数据插入CSV是最简单的方式。如果您的文档中存在CSV无法处理的复杂格式,则可以选择办公自动化。VBA语言强大,可以方便地操作Excel表格。HTH在他们的官方网站上有关于ApachePOI的好教程 final Workbo

我需要加载一个MS Excel模板文件,将内容添加到一些单元格中,然后通过用户的浏览器下载,以便用户可以打开和/或保存该文件

在过去,我设法创建了一些MS Excel工作簿,但这似乎有些不同。我怎么做呢

提前感谢,


gtludwig

Excel支持纯平台CSV格式,在我看来,将数据插入CSV是最简单的方式。如果您的文档中存在CSV无法处理的复杂格式,则可以选择办公自动化。VBA语言强大,可以方便地操作Excel表格。HTH

在他们的官方网站上有关于ApachePOI的好教程

final Workbook wb;
fileIn =new FileInputStream(fname);
wb = WorkbookFactory.create(fileIn);//opening a file
final Sheet sheet = wb.createsheet("Report");// create a sheet
然后使用和类在单元格中添加内容

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);
然后最后关闭
块中的fout

if(fout!=null)
fout.close();
完成excel文件后,创建一个下载servlet

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();

您可能会很幸运地尝试ApachePOI项目在其站点上的众多示例中的一个,我将尝试这个,谢谢!一旦我能确认答案是我所需要的,我就会接受。我可能表达错误了!:)好的,它起作用了!但是打开时,新文件总是只读的,没有我插入的数据。在服务器端检查你的文件..他有数据吗..你用java正确关闭了文件吗?@gtludwig:更新了答案我让它工作了!我错过了一本(工作簿)工作簿;某处。