【发布时间】:2015-04-22 23:36:49
【问题描述】:
我的工作区中有一个模板 excel,当用户单击首页上的打印按钮时,某些模板将在其中更新。
我的要求是单击打印按钮,excel 应该在浏览器的新选项卡中打开,以便用户可以打印,但它没有在浏览器中打开,而是被下载。我不希望用户下载excel 它应该是“仅打印”。
我已经在 apache poi 中编写了 excel 代码并将 'content-disposition' 参数设置为 'inline' 但它仍然不起作用
FileInputStream fsIP= new FileInputStream(new File(request.getSession().getServletContext().getRealPath(".")+ "/Cheque Printing.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fsIP);
HSSFSheet worksheet = wb.getSheetAt(0);
worksheet.setDisplayGridlines(false);
HSSFCell cell = null;
cell = (HSSFCell)worksheet.getRow(1).getCell((short)8);
cell.setCellValue(date);
cell = (HSSFCell)worksheet.getRow(2).getCell((short)2);
cell.setCellValue(payee);
cell = (HSSFCell)worksheet.getRow(3).getCell((short)3);
cell.setCellValue(amt1);
cell = (HSSFCell)worksheet.getRow(5).getCell((short)8);
cell.setCellValue(amount);
fsIP.close();
response.setContentType("application/vnd.ms-excel");
// I thought this line will help me out.
response.setHeader("Content-Disposition", "inline; filename=filename.xls");
final ServletOutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
【问题讨论】:
-
您是否尝试在本地机器上的新浏览器选项卡中打开 excel 文件?你能告诉我们你想要达到什么目标吗?实际上,在网页上显示 excel 文件是一个完全不同的问题。
-
如果我们在 itext pdf 中做类似的编码并且做
-
主要区别在于浏览器通常可以打开PDF文件,但会启动外部应用程序来处理XLS文件。
-
如果我们在 itext pdf 中进行类似的编码并执行 response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "inline; filename=filename.pdf");然后它将在浏览器中打开pdf
-
“我主要关心的是允许用户只打印excel而不是下载”。提供给浏览器的每个文件都可以下载,即使它默认显示在浏览器窗口中。另外:要在浏览器窗口中查看 excel 文件,必须在客户端机器上安装插件。我不认为这样的插件可用于 Linux 或 Mac,因此所需的功能可能仅适用于某些 Windows 机器。
标签: java excel apache-poi content-disposition