参考:
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行无色,按顺序循环下去,怎么搞呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)