java导出excel都是乱码

Java导出Excel乱码的原因可能是编码格式不匹配,可以尝试使用Apache POI库设置正确的编码格式。

当使用Java导出Excel时,如果遇到乱码问题,可以尝试以下方法解决:

1、设置字符编码

java导出excel都是乱码

在导出Excel的过程中,需要设置字符编码为UTF8,以确保中文字符能够正确显示,可以使用Apache POI库来操作Excel文件,示例代码如下:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class ExportExcel {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("测试数据");
        // 创建表头
        Row headerRow = sheet.createRow(0);
        Cell headerCell = headerRow.createCell(0);
        headerCell.setCellValue("姓名");
        headerCell = headerRow.createCell(1);
        headerCell.setCellValue("年龄");
        // 填充数据
        String[][] data = {{"张三", "25"}, {"李四", "30"}, {"王五", "28"}};
        for (int i = 0; i < data.length; i++) {
            Row row = sheet.createRow(i + 1);
            for (int j = 0; j < data[i].length; j++) {
                row.createCell(j).setCellValue(data[i][j]);
            }
        }
        // 设置字符编码为UTF8
        workbook.write(new FileOutputStream("test.xlsx"), StandardCharsets.UTF_8);
        workbook.close();
    }
}

2、使用字体样式处理中文字符

java导出excel都是乱码

如果仍然出现乱码问题,可以尝试使用字体样式来处理中文字符,示例代码如下:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.IndexedColors;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ExportExcel {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("测试数据");
        // 创建表头
        Row headerRow = sheet.createRow(0);
        Cell headerCell = headerRow.createCell(0);
        headerCell.setCellValue("姓名");
        headerCell = headerRow.createCell(1);
        headerCell.setCellValue("年龄");
        // 填充数据
        String[][] data = {{"张三", "25"}, {"李四", "30"}, {"王五", "28"}};
        for (int i = 0; i < data.length; i++) {
            Row row = sheet.createRow(i + 1);
            for (int j = 0; j < data[i].length; j++) {
                row.createCell(j).setCellValue(data[i][j]);
            }
        }
        // 设置字体样式和颜色
        Font font = workbook.createFont();
        font.setFontName("宋体"); // 设置字体名称为宋体,可以根据需要更改为其他中文字体名称,如微软雅黑、黑体等。
        font.setFontHeightInPoints((short) 14); // 设置字体大小为14磅,可以根据需要调整。
        font.setBold(true); // 设置字体加粗,根据需要可以设置为false。
        font.setColor(IndexedColors.BLACK.getIndex()); // 设置字体颜色为黑色,根据需要可以设置为其他颜色。
        workbook.addFont(font); // 将字体添加到工作簿中,如果不添加,可能会导致导出的Excel文件中中文字符显示为乱码。
        Map<String, CellStyle> styles = new HashMap<>(); // 用于存储单元格样式的映射,key为单元格类型(如字符串、数字等),value为对应的单元格样式。
        styles.put("string", createStyleWithFont(workbook, font)); // 创建带有指定字体的单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("number", createDefaultStyle(workbook)); // 创建默认的单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("date", createDefaultStyle(workbook)); // 创建默认的日期单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("boolean", createDefaultStyle(workbook)); // 创建默认的布尔值单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("error", createDefaultStyle(workbook)); // 创建默认的错误单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("null", createDefaultStyle(workbook)); // 创建默认的空值单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("hyperlink", createDefaultStyle(workbook)); // 创建默认的超链接单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("index", createDefaultStyle(workbook)); // 创建默认的索引单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("formula", createDefaultStyle(workbook)); // 创建默认的公式单元格样式,可以根据需要创建其他类型的单元格样式。
        styles.put("annotation", createDefaultStyle(workbook)); // 创建默认的批注单元格样式,可以根据需要创建其他类型的单元格样式。
        styles

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/643396.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2024-05-21 18:38
下一篇 2024-05-21 18:39

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入