我怎样才能alignment一个单元格中的RichTextString?

当我设置单元格的alignment方式是数字alignment时,单元格是文本时它不会。

Workbook workbook = new XSSFWorkbook(); CreationHelper creationHelper = workbook.getCreationHelper(); Sheet sheet = workbook.createSheet("Sheet1"); Row row = sheet.createRow(0); // doesn't Cell richTextCell = row.createCell(0); RichTextString richTextString = creationHelper.createRichTextString("So rich!"); richTextCell.setCellValue(richTextString); CellStyle richTextCellStyle = richTextCell.getCellStyle(); richTextCellStyle.setAlignment(CellStyle.ALIGN_RIGHT); // works Cell numberCell = row.createCell(1); numberCell.setCellValue(12.34); CellStyle numberCellStyle = numberCell.getCellStyle(); numberCellStyle.setAlignment(CellStyle.ALIGN_RIGHT); FileOutputStream fileOutputStream = new FileOutputStream("workbook.xlsx"); try { workbook.write(fileOutputStream); } finally { fileOutputStream.close(); } 

在使用XSSFWorkbook创build.xlsx工作簿时,我重复了此行为。 有趣的是,当我更改为HSSFWorkbook ,行为发生了变化,两个单元格都alignment了。

当我在Excel中打开它时,我仔细看了一下.xlsx。 即使数字看起来像是右alignment,Excel工具栏button指示“alignment右”没有突出显示任何单元格。 作为参考,工具栏button在“Home”,“Alignment”部分,看起来像这样(大特写):

 ________ ______ ________ ______ ________ ______ 

但是,默认情况下,Excel中的所有数字都已经右alignment。 它看起来像.xlsx工作簿,如果它是默认的单元格样式,并且对其进行修改,则不能只获取当前的单元格样式。 您必须创build一个新的CellStyle ,设置其属性,并为单元格设置新的单元格样式。

以下代码在.xls和.xlsx工作簿中工作。 此外,它还创build只有一个CellStyle对象,用于所有适用的单元格,展示适当重用的CellStyle对象。

 CellStyle rightAligned = workbook.createCellStyle(); rightAligned.setAlignment(CellStyle.ALIGN_RIGHT); Cell richTextCell = row.createCell(0); RichTextString richTextString = creationHelper.createRichTextString("So rich!"); richTextCell.setCellValue(richTextString); richTextCell.setCellStyle(rightAligned); Cell numberCell = row.createCell(1); numberCell.setCellValue(12.34); numberCell.setCellStyle(rightAligned);