当我在一个单元格上设置对齐时,它会对齐一个数字,当单元格是文本时,它就会胜出。
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();
}
答案 0 :(得分:4)
在创建带有XSSFWorkbook
的.xlsx工作簿时,我重复了这种行为。有趣的是,当我改为HSSFWorkbook
时,行为发生了变化,两个单元格都正确对齐。
当我在Excel中打开它时,我仔细查看了.xlsx。对于任一单元格,都没有突出显示“右对齐”的Excel工具栏按钮,即使该数字看起来与右侧对齐。作为参考,工具栏按钮位于“Home”,“Alignment”部分,看起来像这样(大特写):
________
______
________
______
________
______
但是,默认情况下,Excel中的所有数字都已经右对齐。对于.xlsx工作簿来说,如果它是默认的单元格样式并修改它,则不能只获取当前的单元格样式。您必须创建一个新的CellStyle
,设置其属性,并为该单元格设置新的单元格样式。
以下代码适用于.xls和.xlsx工作簿。此外,它还只创建一个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);