自动换行apache POI(Excel)

Vic*_*cky 11 java apache-poi xssf

我有一个java程序,它将标题和数据作为输入并生成一个excel文件.

但是,有时当标题值很长并且列数更多时,我的Excel工作表往往会不必要地变宽.

由于标题,我将向下滚动到右边以查看尾端列的内容.

有没有办法可以解决这个问题,如果单元格中的内容比较大,然后说值x,则自动换行并自动调整行高并修改列宽.

我正在寻找的粗略算法是:

 if(content.size is more then 50 chars){
       - apply auto wrap with centred text
       - adjust the row height accordingly
       - adjust all the cells in the column accordingly
 }
Run Code Online (Sandbox Code Playgroud)

如果有人能指出我在网上提供的一些例子.

谢谢阅读!

Lev*_*nal 47

你应该能够用Cell风格实现这一点,我试图将一个例子放在一起展示:

public class SO{
    public static void main(String[] args) {

        try {
            FileInputStream is = new FileInputStream(new File("D:\\Users\\user2777005\\Desktop\\bob.xlsx"));
            XSSFWorkbook wb = new XSSFWorkbook(is);
            String header = "123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789";
            Sheet sheet = wb.getSheet("Sheet1");
            sheet.setColumnWidth(0, 18000);
            Row row = sheet.createRow(0);
            Cell cell = row.createCell(0);

            if(header.length() > 50){ //Length of String for my test
                sheet.setColumnWidth(0, 18000); //Set column width, you'll probably want to tweak the second int
                CellStyle style = wb.createCellStyle(); //Create new style
                style.setWrapText(true); //Set wordwrap
                cell.setCellStyle(style); //Apply style to cell
                cell.setCellValue(header); //Write header
            }

            wb.write(new FileOutputStream(new File("D:\\Users\\user2777005\\Desktop\\bob.xlsx")));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}       
Run Code Online (Sandbox Code Playgroud)

祝好运!