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();
//得到第3行 小标从0开始,所以是2
Row row = sheet.getRow();
//得到第三行第4个单元格 4D 小标从0开始所以是三
Cell cell = row.getCell();
//查看该单元格是否定义,如果没有定义返回NULL
//,否则返回一个逻辑上的单元格,如果没有则创建
//??为什么需要先判断为空,因为如果该单元格已经
//存在而且已经定义,如果你在创建,原来的单元格
//将会被你重新创建的单元格覆盖,这样做可以节约
//你的空间,因为没有重新创建对象
if (cell == null)
cell = row.createCell();
//设置单元格的类型是String字符串文本类型
cell.setCellType(Cell.CELL_TYPE_STRING);
//设定值
//设置单元格中的值 使用有\n换行符
String xxx = "Use \n 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((*sheet.getDefaultRowHeightInPoints())); //调整该列宽度适应内容
// sheet.autoSizeColumn((short)2);
//重新写如文件
FileOutputStream fileOut = new FileOutputStream("D:/workbook1.xlsx");
wb.write(fileOut);
fileOut.close();
}finally{ }
} }
记录这个是因为就算用了这个方法也换不了,因为我从DB中抽出来的字符串带\n结果被转译成 “\\n”,这个问题怎么也换不了行,没办法,只能将抽出的 \n 换成别的标识符然后再去替换了。