导出Excel文件时显示错误字体

时间:2015-11-18 15:26:25

标签: java excel export

我正在编写Java Swing应用程序,用于将数据写入Excel文件。数据是日文文本。 我在MacOS上编码,它显示得很好但是我将执行文件(.jar)带到Windows,我遇到了字体问题。 这是我的代码:

public static void writeStudentsListToExcel(ArrayList<MyContent> contentList) {

    Workbook workbook = new HSSFWorkbook();

    Sheet studentsSheet = workbook.createSheet("MySheet");
    HSSFFont hSSFFont = (HSSFFont) workbook.createFont();
    hSSFFont.setFontName(HSSFFont.FONT_ARIAL);
    HSSFCellStyle cellStyle = (HSSFCellStyle) workbook.createCellStyle();
    cellStyle.setFont(hSSFFont);

    int rowIndex = 0;
    for (MyContent ct : contentList) {
        Row row = studentsSheet.createRow(rowIndex++);
        int cellIndex = 0;

        HSSFCell cell1 = (HSSFCell) row.createCell(cellIndex++);
        cell1.setCellValue(ct.getStt());
        cell1.setCellStyle(cellStyle);

        HSSFCell cell2 = (HSSFCell) row.createCell(cellIndex++);
        cell2.setCellValue(ct.getContents());
        cell2.setCellStyle(cellStyle);

        HSSFCell cell3 = (HSSFCell) row.createCell(cellIndex++);
        cell3.setCellValue(ct.getContentsTrim());
        cell3.setCellStyle(cellStyle);
    }

    // write this workbook in excel file.
    try {
        FileOutputStream fos = new FileOutputStream(FILE_OUTPUT);
        workbook.write(fos);
        fos.close();

        System.out.println(FILE_OUTPUT + " is successfully written");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

以下内容足以打印日文字符并且对我有效:

HSSFFont hSSFFont = (HSSFFont) workbook.createFont();
hSSFFont.setFontName(HSSFFont.FONT_ARIAL);
hSSFFont.setCharSet(HSSFFont.ANSI_CHARSET);

如果您的代码出现问题,这可能是一个编码问题。确保使用最新版本的POI库,当前为Apache POI 3.13。另外,请确保您的文本在应用程序中正确编码。