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 换成别的标识符然后再去替换了。

最新文章

  1. Linux用户态和内核态
  2. [Android Memory] android 警告:Exported activity does not require permission
  3. 272. Closest Binary Search Tree Value II
  4. 【Android 界面效果25】android中include标签的使用
  5. SDWebImage缓存清理
  6. 如何修改SVN中的用户名和密码
  7. 0x80072f8a未指定的错误
  8. 非线性规划问题的matlab求解
  9. Spring+SpringMVC+MyBatis深入学习及搭建(十四)——SpringMVC和MyBatis整合
  10. 配置和启动Kubernetes服务
  11. 【shell】两种字符串提取场景的实现
  12. C语言函数调用栈(一)
  13. AOJ 0009 Prime Number
  14. DataGridView控件-[引用]
  15. cached-query 将缓存和查询数据库高速连接起来的轻类库
  16. Python第一篇-简介和入门
  17. POJ 1038 Bug Integrated Inc(状态压缩DP)
  18. 測试oracle 11g cluster 中OLR的重要性
  19. 整理前端css/js/jq常见问题及解决方法(2)
  20. python的raw_input()函数。 函数的可变对象和不可变对象作为参数传递。

热门文章

  1. volatile,可变参数,memset,内联函数,宽字符窄字符,国际化,条件编译,预处理命令,define中##和#的区别,文件缓冲,位域
  2. android NDK 实用学习(一)-获取java端类及其类变量
  3. 万台规模下的SDN控制器集群部署实践
  4. 【C语言】-循环结构-for语句
  5. 【PAT Advanced Level】1004. Counting Leaves (30)
  6. iOS开发Block的使用
  7. ios开发 数据库版本迁移手动更新迭代和自动更新迭代
  8. 【转】于request.getSession(true/false/null)的区别
  9. 【Android】 图片编辑:创建圆角图片
  10. 从零开始学android-一行两个按钮居中 布局