java web-JavaWeb导出Excel,提示格式与文件扩展名不一致

问题描述

JavaWeb导出Excel,提示格式与文件扩展名不一致

下载部分代码如下
我是参考别人的代码,很多地方不懂,希望大牛解答!
<%@ page language="java" contentType = " text/html;charset=utf-8" import="java.util.*,java.io.File,java.io.*,java.net.*,com.model.*,com.controller.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

DownLoad File

<%
request.setCharacterEncoding( "utf-8" );
String targerName = new String(request.getParameter("targerName").getBytes("ISO-8859-1"), "gb2312");
String filepath="C:/Users/HP/Downloads/";
//以下红色部分最主要
String fullPath = filepath + targerName;

response.reset();
response.setContentType("application/octet-stream");
response.addHeader( "Content-Disposition", "attachment;filename=" + new String(targerName.getBytes("gb2312"), "ISO8859-1"));

OutputStream output = null;
FileInputStream fis = null;

try{
File f = new File(fullPath);
output = response.getOutputStream();
fis = new FileInputStream(f);
byte[] b = new byte[(int)f.length()];
int i = 0;
while((i = fis.read(b)) >0){
output.write(b, 0, i);
}
output.flush();
}catch(Exception e){
e.printStackTrace();
}
finally{
if(fis != null){
fis.close();
fis = null;
}
if(output != null){
output.close();
output = null;
out.clear();
out = pageContext.pushBody();
}
}
%>

解决方案

ASP.NET导出Excel,打开Excel文件时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致”
C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致。

解决方案二:

request.setCharacterEncoding( "utf-8" );
String targerName = new String(request.getParameter("targerName").getBytes("ISO-8859-1"), "gb2312");
utf-8和gbk不能同时用哦,要嘛是你写的代码不正确,就是你导出的EXCEL和你导入的编码不匹配

解决方案三:

导出为excel
response.setContentType("application/vnd.ms-excel;charset=utf-8");
还有文件中文名你这么写不对呀
public static String encodeChineseDownloadFileName(

HttpServletRequest request, String pFileName) throws UnsupportedEncodingException {

         String filename = null;
           String agent = request.getHeader("USER-AGENT");
           if (null != agent){
                if (-1 != agent.indexOf("Firefox")) {//Firefox
                   filename = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(pFileName.getBytes("UTF-8"))))+ "?=";
                }else if (-1 != agent.indexOf("Chrome")) {//Chrome
                    filename = new String(pFileName.getBytes(), "ISO8859-1");
                } else {//IE7+
                    filename = java.net.URLEncoder.encode(pFileName, "UTF-8");
                    filename = StringUtils.replace(filename, "+", "%20");//替换空格
                }
            } else {
                filename = pFileName;
            }
            return filename;
    } 

        这是方法试用不同浏览器
时间: 2024-10-31 20:17:12

java web-JavaWeb导出Excel,提示格式与文件扩展名不一致的相关文章

excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办?

  打开文件时提示"您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致.打开文件前请验证文件没有损坏且来源可信.是否立即打开该文件?",卸载Office 2007后重装也不行.这是什么原因呢?其实是因为警告消息是Excel 2010/2007中添加了一个用户通知函数.警告消息有助于防止由于文件的实际内容和文件扩展名可能不兼容而可能发生的意外的问题. 方法一: 1.打开某个excel后,会有如下提示 2.看到警告框,默认是让我们选否,其实只要选择是,就可以查看 方法二:修改

JavaWeb导出Excel文件并弹出下载框_java

一.引言 在Java Web开发中经常涉及到报表,最近做的项目中需要实现将数据库中的数据显示为表格,并且实现导出为Excel文件的功能. 二.相关jar包 使用POI可以很好的解决Excel的导入和导出的问题,POI下载地址: poi-3.6-20091214.jar 三.关键代码 首先导入上述jar包. 在生成excel时一般数据源形式为一个List,下面把生成Excel格式的代码贴出来: /** * 以下为生成Excel操作 */ // 1.创建一个workbook,对应一个Excel文件

java poi2.5 导出excel 乱码问题

问题描述 java poi2.5 导出excel 乱码问题 我在代码里有设置编码 在某个单元格设置"单位"中文字符后,导出的excel就出现乱码的问题,求解答,网上百度了几种方法都不行.谢谢各位了 解决方案 1.每次打开excel就会提示:"此文件中某些文本格式可能已经更改,因为它已经超出最多允许的字体数.关闭其他文档再试一次可能有用." 解决办法:是因为创建的字体太多了,当调用HSSFWorkbook的createFont之后就创建一种字体,就算字体属性完全一样也

Web应用导出Excel报表的简单实现(HTML)

excel|web|导出excel Web应用导出Excel报表的简单实现      在Web应用中,很多数据经常要导出成Excel文档.用专门的生成真正的Excel文档的方式比较复杂,不太好用.所以经常用一种简单的方式来实现,即将报表保存为HTML格式,然后用Excel打开. 实现方式:    第一步,用JSP实现HTML版本的报表    第二步,在该JSP页面头部设置response的ContentType为Excel格式            <% response.setContentT

Java程序实现导出Excel的方法(支持IE低版本)_java

今天想整理一下自己前段时间遇到的一个导出的问题. 因为项目的需求,要做一部分导出功能.开始的时候用的公司的导出,但是很奇怪有部分模块导出的时候就是会报500错误,发现在删减一些字段后就恢复了正常,当时因为项目紧张,也就临时删减了一些,但也不是长久之计,之后自己在原本的基础上重新修改整理了一下,目前运行还算稳定,就此和大家分享一下. 导出需要三个部分,js,公共方法,后台方法. js代码 function exportData() { //前台接收的参数 rwmc = $("#txt_rwmc&q

ASP.NET导出Excel打开时提示:与文件扩展名指定文件不一致解决方法_实用技巧

"将页面显示的GridView中的数据,导出到Excel表格中"时遇到这样一个错误: C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致.具体提示如图: 解决办法:这里采用"修改注册表的方法"解决此问题,这并没从根上解决问题: 1.打开注册表编辑器方法:开始 -> 运行 -> 输入regedit -> 确定 2.找到注册表子项HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Exc

java-【急,在线等】Java使用POI导出Excel,服务器部署后超过50行报错!

问题描述 [急,在线等]Java使用POI导出Excel,服务器部署后超过50行报错! Java使用POI导出Excel,服务器部署后超过50行报错,但本地调试无异常!具体错误信息如下: 10:13:44,761 ERROR org.apache.struts2.dispatcher.StreamResult StreamResultX : Can not find a java.io.InputStream with the name [excelStream] in the invocati

Java web的读取Excel简单实例代码_java

目录结构: Data.xls数据:   后台页面: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //System.out.println(this.getServletContext().getRealPath ("/")); try{ Workbook wb = Workbook.getWorkboo

导出excel提示cellRow value 65536 must be between 1 and 65534

问题描述 导出excel提示错误cellRowvalue65536mustbebetween1and65534///<summary>///创建一个Excel文件(MyXls)///</summary>///<paramname="strPath">文件路径</param>///<paramname="strFileName">文件名</param>///<paramname="