21xrx.com
2024-11-22 08:13:12 Friday
登录
文章检索 我的文章 写文章
Java导出Excel表格中文乱码问题及解决方法
2023-06-16 09:54:16 深夜i     --     --
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表格中文乱码问题的三种方法,可以根据具体情况选择合适的方法进行解决。

  
  

评论区

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