java poi出excel换行问题

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);  
            //设定值  
          //设置单元格中的值 使用有\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((2*sheet.getDefaultRowHeightInPoints())); 
            
            //调整该列宽度适应内容   
           // sheet.autoSizeColumn((short)2);  
            //重新写如文件  
            FileOutputStream fileOut = new FileOutputStream("D:/workbook1.xlsx");  
            wb.write(fileOut);  
            fileOut.close();  
        }finally{
            
        }
    }

}

记录这个是因为就算用了这个方法也换不了,因为我从DB中抽出来的字符串带\n结果被转译成 “\\n”,这个问题怎么也换不了行,没办法,只能将抽出的 \n 换成别的标识符然后再去替换了。

posted on 2016-08-02 15:38  手撕高达的村长  阅读(7402)  评论(0编辑  收藏  举报

导航