21xrx.com
2025-04-03 02:13:01 Thursday
文章检索 我的文章 写文章
Java导出Excel表格中文乱码问题及解决方法
2023-06-16 09:54:16 深夜i     45     0
Java Excel导出 POI库 中文乱码

当我们使用Java代码导出Excel表格时,可能会遇到中文乱码的问题。这是因为Excel表格默认使用英文字符集,而中文字符集与英文字符集不同,导致中文字符无法正常显示。下面介绍几种解决方法。

1. 使用POI库设置字符集

在使用POI库创建Excel工作簿时,可以通过设置字符集来解决中文乱码的问题。具体代码如下:

// 创建Excel工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建Excel工作表
HSSFSheet sheet = workbook.createSheet("sheet1");
// 设置字符集
workbook.setSheetName(0, new String("工作表1".getBytes("gb2312"), "iso8859-1"));

2. 将数据先保存为CSV文件再转换为Excel表格

将数据先保存为CSV文件,再通过POI库将CSV文件转换为Excel表格。这种方法可以避免中文乱码的问题。具体代码如下:

// 保存为CSV文件
FileOutputStream out = new FileOutputStream(savePath);
OutputStreamWriter osw = new OutputStreamWriter(out, "GBK");
CsvWriter writer = new CsvWriter(osw,',');
writer.writeRecord(headers);
for(String[] row: data) {
  writer.writeRecord(row);
}
writer.close();
// 将CSV文件转换为Excel表格
Workbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet();
FileInputStream in = new FileInputStream(csvPath);
InputStreamReader isr = new InputStreamReader(in, "gbk");
CSVReader reader = new CSVReader(isr);
String[] rowData = null;
int rowIndex = 0;
while((rowData = reader.readNext()) != null) {
  Row row = sheet.createRow(rowIndex++);
  for(int i=0; i
    row.createCell(i).setCellValue(rowData[i]);
  }
}
reader.close();

3. 设置Excel表格为UTF-8编码

将Excel表格设置为UTF-8编码,可以解决中文乱码问题。具体代码如下:

// 创建Excel工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建Excel工作表
XSSFSheet sheet = workbook.createSheet("sheet1");
// 设置编码为UTF-8
sheet.setDefaultColumnWidth(20);
sheet.setDefaultRowHeight((short) (2 * 256));
sheet.setEncoding("UTF-8");

以上是解决Java导出Excel表格中文乱码问题的三种方法,可以根据具体情况选择合适的方法进行解决。

  
  

评论区