我正在编写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();
}
}
答案 0 :(得分:0)
以下内容足以打印日文字符并且对我有效:
HSSFFont hSSFFont = (HSSFFont) workbook.createFont();
hSSFFont.setFontName(HSSFFont.FONT_ARIAL);
hSSFFont.setCharSet(HSSFFont.ANSI_CHARSET);
如果您的代码出现问题,这可能是一个编码问题。确保使用最新版本的POI库,当前为Apache POI 3.13。另外,请确保您的文本在应用程序中正确编码。