21xrx.com
2024-12-23 00:41:17 Monday
登录
文章检索 我的文章 写文章
解决Java导出Excel中的乱码问题
2023-06-14 15:28:37 深夜i     --     --
Java Excel 导出 乱码 POI JXL

当使用Java进行导出Excel操作时,有时候会出现导出的内容都是乱码的情况。这个问题的解决方法有很多种,下面将会为大家介绍几种常用的解决方案。

一、使用UTF-8编码方式

在Java中进行导出Excel操作时,默认采用的编码方式是“GBK”,而在有些情况下,这种编码方式之间的转换可能会出现乱码。因此,在进行导出Excel操作时,建议使用UTF-8编码方式。

示例代码:


response.setContentType("application/vnd.ms-excel;charset=UTF-8");

二、使用POI进行转换

另一种方法就是使用POI进行转换。POI是一个非常流行的Java开源工具库,可以帮助我们进行Excel文件的处理。有时候,POI会自动地将我们的文件转换为UTF-8编码,这样可以避免出现乱码的问题。

示例代码:


Workbook wb = new XSSFWorkbook();

Sheet sheet = wb.createSheet();

Row row = sheet.createRow(0);

Cell cell = row.createCell(0);

cell.setCellValue("Hello, world!");

ByteArrayOutputStream baos = new ByteArrayOutputStream();

wb.write(baos);

String content = new String(baos.toByteArray(), StandardCharsets.UTF_8);

response.setHeader("Content-Disposition", "attachment;filename=test.xlsx");

response.setContentType("application/vnd.ms-excel;charset=utf-8");

ServletOutputStream out = response.getOutputStream();

out.write(content.getBytes());

out.flush();

out.close();

三、使用JXL进行转换

还有一个方法是使用JXL进行转换。JXL是一个Java编写的Excel读写库,使用它来替代POI可以解决导出Excel出现乱码的问题。

示例代码:


OutputStream os = response.getOutputStream();

WritableWorkbook book = Workbook.createWorkbook(os);

WritableSheet sheet = book.createSheet("Sheet1", 0);

WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.NO_BOLD, false);

WritableCellFormat cellFormat = new WritableCellFormat(font);

cellFormat.setAlignment(jxl.format.Alignment.CENTRE);

Label label = new Label(0, 0, "Hello, world!", cellFormat);

sheet.addCell(label);

book.write();

book.close();

os.flush();

os.close();

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复