当前位置: 首页 > 知识库问答 >
问题:

如何用Java+Struts2在浏览器中打开Excel表?

伊光赫
2023-03-14

我试图在浏览器中打开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打开它,它是不起作用的。

共有1个答案

阎卓
2023-03-14
  1. 可以将任何二进制结果与流结果一起输出;
  2. 要输出Excel文件(通过读取现有的Excel文件和创建新的Excel文件),您需要根据要输出的Excel文件类型(通常是XLS或XLSX),设置正确的内容类型,如本答案所述。
  3. 您可以通过将默认内容处理从附件更改为内联
  4. 来指示用户代理需要在浏览器中打开文件(而不是要求使用桌面应用程序下载/打开)
  5. 内联打开一个未知的二进制文件取决于客户端:如果您输出一个JPEG,浏览器将很容易打开它;如果输出PDF(或Excel文档、Word文档等),浏览器将搜索适当的插件(例如Adobe Acrobat),如果找不到,将尝试用桌面应用程序(例如Adobe Reader)打开它。这就是为什么在Internet Explorer(内置插件)中打开Excel可以工作,而在Firefox中打开它就不行了。
 类似资料:
  • 这可能已经被问过了,但到目前为止,我根本找不到任何详细的解释,现有的留档似乎是为某种通灵者写的,他应该知道一切。 根据本手册,我添加了容器 然后我检查它以接收容器ip 检查的端口 并尝试用这个公式在浏览器中连接 它不起作用。 我是否做错了什么,或者我应该添加一些额外的东西,比如 apache 或其他东西的容器? 编辑 据我了解,在创建一些兔子容器后,现在我需要运行 Dockerfile 来创建映像

  • 问题内容: 可能已经有人问过这个问题,但是到目前为止,我根本找不到任何详细的解释,而现有的文档似乎好像是为应该了解所有知识的通灵者编写的。 按照本手册,我添加了容器 然后我检查了它以接收容器ip 检查端口 并尝试使用此公式在浏览器中进行连接 没用 我是在做错什么,还是应该添加一些其他内容,例如用于存放Apache或其他内容的容器? 编辑 据我了解,在创建了一些兔子容器之后,现在我需要运行Docke

  • 全局基类 登录名 } 问题是,当运行此功能时,我得到了下面的错误,我不明白为什么会发生这种情况,因为它在错误的位置上没有给我任何帮助。 未定义步骤:给定I打开Chrome 未定义步骤:浏览网站时 未定义的步骤:然后我使用“user1”和“password1”登录网站

  • 问题内容: 我想执行XMLHttpRequest,然后通过POST方法发送文件名在浏览器中打开PDF。 这可能吗,或者XMLHttpRequest仅用于HTML? 问题答案: 如果您查询的URL实际上返回PDF数据,则无法通过XMLHttpRequest进行操作。 为什么?因为该响应是包含原始PDF数据的HTTP响应。即使您确实可以通过responseText`属性访问数据,JavaScript也

  • 不仅浏览器没有打开,而且测试失败,输出如下:

  • 问题内容: 有人可以向我指出如何打开默认Web浏览器并将页面设置为“ www.example.com”的正确方向。谢谢 问题答案: 是你要寻找的