POI操作excel实现换行问题。
package jp.co.misumi.mdm.batch.common.jobrunner; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.amazonaws.services.devicefarm.model.Test; import jp.co.misumi.mdm.batch.common.def.BatchConstants; import jp.co.misumi.mdm.core.common.excel.writer.ExcelWriterExt; public class Demo { public static void main(String[] args) { // TODO Auto-generated method stub try { Test(); } catch (EncryptedDocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvalidFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("---END---"); } public static void Test() throws IOException, EncryptedDocumentException, InvalidFormatException { //初始化输入流 InputStream inp; try { XSSFWorkbook wb = null; try { wb = new XSSFWorkbook("D:/workbook.xlsx"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //创建读取对应的文件生成对象 //得到第0个工作薄 Sheet sheet = wb.getSheetAt(0); //得到第3行 小标从0开始,所以是2 Row row = sheet.getRow(2); //得到第三行第4个单元格 4D 小标从0开始所以是三 Cell cell = row.getCell(3); //查看该单元格是否定义,如果没有定义返回NULL //,否则返回一个逻辑上的单元格,如果没有则创建 //??为什么需要先判断为空,因为如果该单元格已经 //存在而且已经定义,如果你在创建,原来的单元格 //将会被你重新创建的单元格覆盖,这样做可以节约 //你的空间,因为没有重新创建对象 if (cell == null) cell = row.createCell(3); //设置单元格的类型是String字符串文本类型 cell.setCellType(Cell.CELL_TYPE_STRING); //设定值 //设置单元格中的值 使用有 换行符 String xxx = "Use with word wrap on to create a new line"; cell.setCellValue(xxx); //cell.setCellValue("a test"); CellStyle cs = wb.createCellStyle(); cs.setWrapText(true); cell.setCellStyle(cs); //增加行的高度以适应2行文本的高度,设置高度单位(像素) row.setHeightInPoints((2*sheet.getDefaultRowHeightInPoints())); //调整该列宽度适应内容 // sheet.autoSizeColumn((short)2); //重新写如文件 FileOutputStream fileOut = new FileOutputStream("D:/workbook1.xlsx"); wb.write(fileOut); fileOut.close(); }finally{ } } }
记录这个是因为就算用了这个方法也换不了,因为我从DB中抽出来的字符串带 结果被转译成 “\n”,这个问题怎么也换不了行,没办法,只能将抽出的 换成别的标识符然后再去替换了。