用poi包的hssf,怎样让excel中的单元格cell里面的文字"自动换行

用poi包的hssf,怎样让excel中的单元格cell里面的文字"自动换行,第1张

参考:

public static void main(String[] args) {

try {

FileInputStream is = new FileInputStream(new File("D:\\Users\\user2777005\\Desktop\\bobxlsx"));

XSSFWorkbook wb = new XSSFWorkbook(is);

String header = "123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789";

Sheet sheet = wbgetSheet("Sheet1");

sheetsetColumnWidth(0, 18000);

Row row = sheetcreateRow(0);

Cell cell = rowcreateCell(0);

if(headerlength() > 50){ //Length of String for my test

sheetsetColumnWidth(0, 18000);

CellStyle style = wbcreateCellStyle(); //Create new style

stylesetWrapText(true); //设置换行

cellsetCellStyle(style); //Apply style to cell

cellsetCellValue(header); //Write header

}

wbwrite(new FileOutputStream(new File("D:\\Users\\user2777005\\Desktop\\bobxlsx")));

} catch (IOException e) {

eprintStackTrace();

}

}

注意事项:同样写入到Excel的时间格式为------> yyyy/m/d h:mm:ss ,且单元格宽度不够的的情况的下:

显示方式1:

显示方式2:

原因分析:“显示方式1”的写入格式是String类型,cellsetCellValue(date),其中date为String类型;

                  “显示方式2”的写入格式为Date类型,cellsetCellValue(date),其中date为Date类型;

解决办法:

1如果想要时间格式不被压缩成成“###”,可以将我们获取到的时间转换成String类型,

SimpleDateFormat formatter= new SimpleDateFormat("yyyy/M/d H:mm:ss");

Date date= new Date(SystemcurrentTimeMillis());

String time= formatterformat(date);

2如果想要单元格格式为时间,且在单元格宽度不够的情况下显示成“###” ,

CreationHelper createHelper=workbookgetCreationHelper();

CellStyle style= workbookcreateCellStyle();

DataFormat format= workbookcreateDataFormat();

stylesetDataFormat(createHelpercreateDataFormat()getFormat("yyyy/M/d H:mm:ss"));

cellsetCellValue(new Date());

cellsetCellStyle(style);

即可!

备注:将时间字符串timeString转换成Date格式方法:

Date date=null;

SimpleDateFormat formatter=new SimpleDateFormat("yyyy/M/d H:mm:ss");

date=formatterparse(timeString);

以上。

                    

使用 poi ,具体实现

HSSFCellStyle style = null;

// 创建表头style

HSSFCellStyle cellStyleTitle = workbookcreateCellStyle();

cellStyleTitlesetFillPattern(HSSFCellStyleSOLID_FOREGROUND); // 填充单元格

cellStyleTitlesetFillForegroundColor(HSSFColorYELLOWindex);

cellStyleTitlesetAlignment(HSSFCellStyleALIGN_CENTER);// //居中显示

HSSFRow titleRow = sheetcreateRow(0);

for (int i = 0; i < titleslength; i++) {

HSSFCell cell = titleRowcreateCell(i);

// cellsetCellStyle(createCellColorStyle(workbook));

cellsetCellStyle(cellStyleTitle);

cellsetCellValue(titles[i]);// 给单元格赋值

}

import orgapachepoihssfusermodelHSSFCell;

import orgapachepoihssfusermodelHSSFCellStyle;

import orgapachepoihssfusermodelHSSFRow;

import orgapachepoihssfusermodelHSSFSheet;

import orgapachepoihssfusermodelHSSFWorkbook;

import orgapachepoipoifsfilesystemPOIFSFileSystem;

/

@param inputFile 输入模板文件路径

@param outputFile 输入文件存放于服务器路径

@param dataList 待导出数据

@throws Exception

@roseuid:

/

public void exportExcelFile(String inputFile, String outputFile, List dataList) throws Exception

{

//用模板文件构造poi

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));

//创建模板工作表

HSSFWorkbook templatewb = new HSSFWorkbook(fs);

//直接取模板第一个sheet对象

HSSFSheet templateSheet = templatewbgetSheetAt(1);

//得到模板的第一个sheet的第一行对象 为了得到模板样式

HSSFRow templateRow = templateSheetgetRow(0);

//HSSFSheet timplateSheet = templatewbgetSheetAt(1);

//取得Excel文件的总列数

int columns = templateSheetgetRow((short) 0)getPhysicalNumberOfCells();

Debugprintln("columns is : " + columns);

//创建样式数组

HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];

//一次性创建所有列的样式放在数组里

for (int s = 0; s < columns; s++)

{

//得到数组实例

styleArray[s] = templatewbcreateCellStyle();

}

//循环对每一个单元格进行赋值

//定位行

for (int rowId = 1; rowId < dataListsize(); rowId++)

{

//依次取第rowId行数据 每一个数据是valueList

List valueList = (List) dataListget(rowId - 1);

//定位列

for (int columnId = 0; columnId < columns; columnId++)

{

//依次取出对应与colunmId列的值

//每一个单元格的值

String dataValue = (String) valueListget(columnId);

//取出colunmId列的的style

//模板每一列的样式

HSSFCellStyle style = styleArray[columnId];

//取模板第colunmId列的单元格对象

//模板单元格对象

HSSFCell templateCell = templateRowgetCell((short) columnId);

//创建一个新的rowId行 行对象

//新建的行对象

HSSFRow hssfRow = templateSheetcreateRow(rowId);

//创建新的rowId行 columnId列 单元格对象

//新建的单元格对象

HSSFCell cell = hssfRowcreateCell((short) columnId);

//如果对应的模板单元格 样式为非锁定

if (templateCellgetCellStyle()getLocked() == false)

{

//设置此列style为非锁定

stylesetLocked(false);

//设置到新的单元格上

cellsetCellStyle(style);

}

//否则样式为锁定

else

{

//设置此列style为锁定

stylesetLocked(true);

//设置到新单元格上

cellsetCellStyle(style);

}

//设置编码

cellsetEncoding(HSSFCellENCODING_UTF_16);

//Debugprintln("dataValue : " + dataValue);

//设置值 统一为String

cellsetCellValue(dataValue);

}

}

//设置输入流

FileOutputStream fOut = new FileOutputStream(outputFile);

//将模板的内容写到输出文件上

templatewbwrite(fOut);

fOutflush();

// *** 作结束,关闭文件

fOutclose();

}

以上就是关于用poi包的hssf,怎样让excel中的单元格cell里面的文字"自动换行全部的内容,包括:用poi包的hssf,怎样让excel中的单元格cell里面的文字"自动换行、POI采坑系列:POI 导入导出Excel时,需要注意的时间格式####、java如何实现用POI输出Excel的时候,设置背景n行有色,n行无色,按顺序循环下去,怎么搞呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9317941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存