情况描述:
Excel的默认编码格式是 ANSI,但是 office 版本有很多
旧版本的excel无法打开utf-8编码的文件,只能打开ANSI编码的文件 (如office2007版本)
新版本的excel可以打开utf-8编码的文件,也能打开ANSI编码的文件 (如office2010版本)
因此,不能只是输出一个文件然后给它命名为 .csv/.xlx 这样无法做到版本兼容

解决方式:
生成一个excel然后再输出,这样就可以做到版本兼容

代码:
1,2,3
4,5,6
7,8,9
文件内容如上所示,然后写入到excel并输出

    /***  将文本内容写入Excel,然后下载该Excel* @param pathfile 待读取的文本路径* @param response 响应* @param fileName 生成的Excel文件名称  (XXX.xls)*/public void downLoadFile(String pathfile, HttpServletResponse response, String fileName) {try {//解决下载后的文件中文名乱码问题fileName = new String(fileName.getBytes("GBK"), "iso-8859-1");} catch (UnsupportedEncodingException e) {logger.error("", e);view.viewString(ParamUtils.errorParam("不支持iso-8859-1编码格式"), response);}//声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();//生成一个表格HSSFSheet sheet = workbook.createSheet(fileName);//向excel中写入内容FileInputStream fis = null;InputStreamReader isr = null;BufferedReader br = null;try {fis = new FileInputStream(pathfile);isr = new InputStreamReader(fis,"utf-8");br = new BufferedReader(isr);String line;int i = 0;//按行读取文件中的内容,然后写入Excel中(PIO也可以设置Excel的样式)while((line = br.readLine()) != null){String str = line;String[] splits = str.split(",");HSSFRow nrow = sheet.createRow(i);for (int j = 0; j < splits.length; j++) {HSSFCell nCell = nrow.createCell(j);nCell.setCellValue(splits[j]);}i++;}} catch (FileNotFoundException e) {logger.error("指定的读取文件不存在\"", e);} catch (UnsupportedEncodingException e) {logger.error("文本内容不能转成 utf-8", e);} catch (IOException e) {logger.error("写入内容出错", e);} finally {try {fis.close();isr.close();br.close();} catch (IOException e) {logger.error("读取流关闭异常", e);}}//输出excelresponse.reset();response.setCharacterEncoding("utf-8");// Content-disposition 告诉浏览器以下载的形式打开response.setHeader("Content-disposition", "attachment; filename=" + fileName);// application/ms-excel;charset=utf-8 告诉浏览器下载的文件是excelresponse.setContentType("application/ms-excel");OutputStream out = null;try {out = new BufferedOutputStream(response.getOutputStream());workbook.write(out);} catch (IOException e) {logger.error("excel导出有误", e);} finally {try {out.close();} catch (IOException e) {logger.error("读取内容有误", e);}}}

java excel 写入与下载实现 (解决乱码问题)相关推荐

  1. inputstream读取html乱码,java InputStream 读取汉语言内容的解决乱码

    java InputStream 读取中文内容的解决乱码 String suffix=file.substring(file.lastIndexOf('.')+1,file.length()); if ...

  2. Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)

    这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 先试用Response.WriteFile的方法: FileInfo fi = new FileInfo(excelFile); ...

  3. vue 二进制文件的下载(解决乱码和解压报错)

    问题描述:项目中使用的是vue框架进行开发,因为文件下载存在权限问题,所以并不能通过 a 链接的 href 属性直接赋值 URL进行下载, (如果你的文件没有下载权限,可以直接通过href属性赋值UR ...

  4. java excel导出并下载

    在使用时,直接传递参数并调用该方法即可 import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; impor ...

  5. Java excel大批量图片数据导出解决内存溢出问题

    如果使用poi直接将所有图片一张张写到excel里,最后excel里图片达到10000张之后,内存就快爆掉了,所以,使用该方法将图片写到磁盘里,最后一次性替换掉,目前没有找到更好的方法,暂时使用该方法 ...

  6. java 批量写入文件_Java批量写入文件和下载图片的示例代码

    很久没有在WhitMe上写日记了,因为觉着在App上写私密日记的话肯定是不安全的,但是想把日记存下来.,然后看到有导出日记的功能,就把日记导出了(还好可以直接导出,不然就麻烦点).导出的是一个html ...

  7. java迅雷下载excel,Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...

    (一) 如果在迅雷的下载对话框中点取消,则会使用IE的下载,这里的文件又是正确的了: 怀疑迅雷是根据下载对话框中的网址重新请求下载,与发起请求的页面已经无关,而IE又不会把ViewState信息传到迅 ...

  8. java下载乱码怎么解决_java下载文件出现乱码怎么解决

    java下载文件出现乱码怎么解决 发布时间:2020-06-24 13:12:27 来源:亿速云 阅读:108 作者:Leah 这期内容当中的小编将会给大家带来有关java下载文件出现乱码的解决方法, ...

  9. 【原】Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...

    这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 生成Excel文件的方法,见:[原].Net创建Excel文件(插入数据.修改格式.生成图表)的方法 先试用Response.W ...

最新文章

  1. 怎么知道一名研究生有没有科研潜力?
  2. django-Modelform
  3. 给定2个字符串,如何计算变化(插入、删除、替换)?【levenshtein distance 算法】
  4. tomcat启动占了12g_windows server tomcat服务器部署内存占用高问题
  5. boost::callable_traits的is_const_member的测试程序
  6. [SDOI2013]直径 (树的直径,贪心)
  7. Swift调用第三方OC项目
  8. 排序算法(5)----堆排序
  9. pycharm的background task一直更新index,速度慢的解决方法
  10. 为什么java button 不能用 显示红色_Java中的整型包装类值的比较为什么不能用==比较?原因是因为缓存...
  11. uRPF Unicast Reverse Path Forwarding
  12. macOS Mac10.15修改登录界面背景
  13. 《python 计算机视觉编程》教程+图片+代码
  14. 使用高德地图自定义marker、infowindow
  15. 字符串练习:手机号码屏蔽,身份证号码信息查看,游戏骂人敏感词替换
  16. android 7.0 漏洞利用,谷歌 Android 移动操作系统中的零日漏洞被攻击者利用
  17. 大数据高级开发工程师——Spark学习笔记(9)
  18. 数据集特征提取_特征提取和选择
  19. 鸿蒙系统新平板,华为官宣新款MatePad Pro,首款鸿蒙系统平板
  20. CUDA学习之CUDA执行模型--part3

热门文章

  1. android设置edittext字数,Android EditText最大字数限制并提示
  2. 如何下载丰台区卫星地图高清版大图
  3. 中兴c300业务板_全新中兴C300 OLT ETGO板卡 业务板 EPON PON板 GTGO板卡
  4. 梁少爷的前端之旅(3)
  5. 国际通信出入口局管理办法—中华人民共和国信息产业部令第22号
  6. 考研英语长难句(刘晓燕)笔记 第三课 名词(短语)和名词性从句
  7. JScrollPane中添加组件时滚动条不出现或添加组件显示不全解决方案
  8. thymeleaf:字符串Strings常见的使用方法
  9. 汽车防振橡胶隔离器安装座的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 你给我的感悟,我读懂了文字