【问题标题】:How to open an Excel sheet in browser using Java+Struts2?如何使用 Java+Struts2 在浏览器中打开 Excel 工作表?
【发布时间】:2014-05-28 11:25:46
【问题描述】:

我试图在浏览器中打开一个 xls 工作表,而不是在 MS Excel 中。我试过Desktop.getDesktop().browse(fileName.toURI()); 但没有用。这是execute方法的完整代码:

public String execute() throws Exception
{    
    String rutaArchivo = System.getProperty("catalina.base")+"/ejemploExcelJava.xls";     

    File archivoXLS = new File(rutaArchivo);

    if(archivoXLS.exists()) {
        archivoXLS.delete();
    }
    archivoXLS.createNewFile();

    Workbook libro = new HSSFWorkbook();

    FileOutputStream archivo = new FileOutputStream(archivoXLS);

    Sheet hoja = libro.createSheet("Mi hoja de trabajo 1");

    Date fechaActual = new Date();
    for (int f = 0; f < 10; f++) {            
        Row fila = hoja.createRow(f);            
        for (int c = 0; c < 5; c++) {
            Cell celda = fila.createCell(c);               
            if (f == 0) {
                celda.setCellValue("Encabezado #" + c);
            } else {
                celda.setCellValue(fechaActual.getHours() +  ":"  + fechaActual.getMinutes());
            }
        }
    }        
    libro.write(archivo);        
    archivo.close();        
    Desktop.getDesktop().browse(archivoXLS.toURI());                                                                                         
 }

无论如何,这可以从 Microsoft Office Excel 应用程序打开 excel,但只能通过从 Netbeans 运行项目。如果我尝试在没有 Netbeans 的情况下从 Tomcat 打开它,它不起作用。

【问题讨论】:

  • 这是一个网络应用程序吗?
  • 是的,它是一个网络应用程序。用 JSP 制作。我按下一个触发此 Java 操作的按钮。
  • 能否提供您有写入权限的输出资源的位置?
  • 不确定您在做什么:创建新文件或从某处读取文件,但无论哪种情况,您都可以将其流式传输回用户。使用 S2 stream 结果。
  • 我正在创建一个新的并展示它。我会尝试使用“流”

标签: java excel netbeans struts2


【解决方案1】:
  1. 您可以使用Stream Result 输出任何二进制结果;
  2. 要输出 Excel 文件(通过读取现有文件和创建新文件),您需要根据要输出的 excel 文件类型设置正确的 Content Type(通常是 XLS 或 XLSX),like described in this answer
  3. 您可以通过更改默认的Content Disposition来指示用户代理需要在浏览器中打开文件(而不是要求下载/使用桌面应用程序打开)强>从attachmentinline
  4. 打开一个 unknown 内嵌二进制文件取决于客户端:如果您输出 JPEG,浏览器将轻松打开它;如果您流式传输 PDF(或 Excel 文档、Word 文档等),浏览器将搜索适当的插件(例如 Adob​​e Acrobat),如果未找到,将尝试使用桌面应用程序打开它(例如 Adob​​e Reader)无论如何。这就是为什么在 Internet Explorer(内置插件)中打开 Excel 有效,而在 Firefox 中打开却无效的原因。

【讨论】:

  • 对不起,我花了很长时间回答你并投票给你,伙计。大约 2 年前,我刚刚挽救了我的 Stack Overflow 帐户并看到了这一点,并记得它对我有帮助。谢谢,我希望它可以帮助别人。
  • 迟到总比不到好! :P
猜你喜欢
  • 2015-04-22
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 2020-04-25
  • 2015-07-03
  • 1970-01-01
  • 2011-04-21
相关资源
最近更新 更多