单元格样式.docx
- 文档编号:25546194
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:16
- 大小:19.16KB
单元格样式.docx
《单元格样式.docx》由会员分享,可在线阅读,更多相关《单元格样式.docx(16页珍藏版)》请在冰豆网上搜索。
单元格样式
∙POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:
先获取工作薄对象:
HSSFWorkbookwb=newHSSFWorkbook();
HSSFSheetsheet=wb.createSheet();
HSSFCellStylesetBorder=wb.createCellStyle();
一、设置背景色:
setBorder.setFillForegroundColor((short)13);//设置背景色
setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
二、设置边框:
setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框
setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
三、设置居中:
setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
四、设置字体:
HSSFFontfont=wb.createFont();
font.setFontName("黑体");
font.setFontHeightInPoints((short)16);//设置字体大小
HSSFFontfont2=wb.createFont();
font2.setFontName("仿宋");
font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
font2.setFontHeightInPoints((short)12);
setBorder.setFont(font);//选择需要用到的字体格式
五、设置列宽:
sheet.setColumnWidth(0,3766);//第一个参数代表列id(从0开始),第2个参数代表宽度值
六、设置自动换行:
setBorder.setWrapText(true);//设置自动换行
七、合并单元格:
Regionregion1=newRegion(0,(short)0,0,(short)6);
//参数1:
行号参数2:
起始列号参数3:
行号参数4:
终止列号
sheet.addMergedRegion(region1);
八、加边框
HSSFCellStylecellStyle=wookBook.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setBorderBottom(HSSFCellStyle.BorderBORDER_MEDIUM);
cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
cellStyle.setTopBorderColor(HSSFColor.BLACK.index);
例子:
@ResponseBody
@RequestMapping(value="/reportForms/joinStocktaking/exportStorage.api")
publicAjaxResponseexportStorage(@RequestBodyStorageModelmodel)throwsException{
if(logger.isDebugEnabled())
logger.debug("tmpdiris,{}",System.getProperty(JAVA_IO_TMPDIR));
introw=1;
HSSFWorkbookworkbook=newHSSFWorkbook();
HSSFSheethssfSheet=workbook.createSheet();
HSSFCellStylestyle=workbook.createCellStyle();
style.setFillBackgroundColor(HSSFCellStyle.LEAST_DOTS);
style.setFillPattern(HSSFCellStyle.LEAST_DOTS);
//设置Excel中的边框(表头的边框)
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
style.setLeftBorderColor(HSSFColor.BLACK.index);
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
style.setRightBorderColor(HSSFColor.BLACK.index);
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
style.setTopBorderColor(HSSFColor.BLACK.index);
//设置字体
HSSFFontfont=workbook.createFont();
font.setFontHeightInPoints((short)14); //字体高度
font.setFontName("黑体"); //字体
style.setFont(font);
HSSFRowfirstRow=hssfSheet.createRow((short)0);
HSSFCellfirstCell=firstRow.createCell(0);
firstRow.setHeight((short)400);
//设置Excel中的背景
style.setFillForegroundColor(HSSFColor.GREEN.index);
style.setFillBackgroundColor(HSSFColor.GREEN.index);
firstCell.setCellValue(newHSSFRichTextString("库房"));
firstCell.setCellStyle(style);
HSSFCellsecondCell=firstRow.createCell
(1);
firstRow.setHeight((short)400);
style.setFillForegroundColor(HSSFColor.GREEN.index);
style.setFillBackgroundColor(HSSFColor.GREEN.index);
secondCell.setCellValue(newHSSFRichTextString("库区"));
secondCell.setCellStyle(style);
HSSFCellthreeCell=firstRow.createCell
(2);
firstRow.setHeight((short)400);
style.setFillForegroundColor(HSSFColor.GREEN.index);
style.setFillBackgroundColor(HSSFColor.GREEN.index);
threeCell.setCellValue(newHSSFRichTextString("物料编号"));
threeCell.setCellStyle(style);
HSSFCellfourCell=firstRow.createCell(3);
firstRow.setHeight((short)400);
style.setFillForegroundColor(HSSFColor.GREEN.index);
style.setFillBackgroundColor(HSSFColor.GREEN.index);
fourCell.setCellValue(newHSSFRichTextString("物料名称"));
fourCell.setCellStyle(style);
HSSFCellfiveCell=firstRow.createCell(4);
firstRow.setHeight((short)400);
style.setFillForegroundColor(HSSFColor.GREEN.index);
style.setFillBackgroundColor(HSSFColor.GREEN.index);
fiveCell.setCellValue(newHSSFRichTextString("在库数量"));
fiveCell.setCellStyle(style);
HSSFCellsixCell=firstRow.createCell(5);
firstRow.setHeight((short)400);
style.setFillForegroundColor(HSSFColor.GREEN.index);
style.setFillBackgroundColor(HSSFColor.GREEN.index);
sixCell.setCellValue(newHSSFRichTextString("锁定数量"));
sixCell.setCellStyle(style);
//设置列宽
hssfSheet.setColumnWidth(0,7000);
hssfSheet.setColumnWidth(1,8000);
hssfSheet.setColumnWidth(2,4000);
hssfSheet.setColumnWidth(3,6000);
hssfSheet.setColumnWidth(4,4000);
hssfSheet.setColumnWidth(5,4000);
List list=joinStocktackingService.findjoinStorageByTerm(model.getWareHouse(),model.getStockArea(),model.getMaterialCode(),model.getMaterialName());
for(Objectobject:
list){
Object[]objects=(Object[])object;
Storagestorage=(Storage)objects[0];
Warehousewarehouse=(Warehouse)objects[1];
StockAreastockArea=(StockArea)objects[2];
Materialmaterial=(Material)objects[3];
//设置Excel中的边框
HSSFCellStylecellStyle=workbook.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
cellStyle.setTopBorderColor(HSSFColor.BLACK.index);
HSSFRowhssfRow=hssfSheet.createRow((short)row);
HSSFCellfirstHssfCell=hssfRow.createCell(0);//库房
firstHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);
firstHssfCell.setCellValue(newHSSFRichTextString(warehouse.getName()));
firstHssfCell.setCellStyle(cellStyle);//设置单元格的样式
HSSFCellsecondHssfCell=hssfRow.createCell
(1);
secondHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);
secondHssfCell.setCellValue(newHSSFRichTextString(stockArea.getName()));
secondHssfCell.setCellStyle(cellStyle);//设置单元格的样式
HSSFCellthreeHssfCell=hssfRow.createCell
(2);
threeHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);
threeHssfCell.setCellValue(newHSSFRichTextString(material.getCode()));
threeHssfCell.setCellStyle(cellStyle);//设置单元格的样式
HSSFCellfourHssfCell=hssfRow.createCell(3);
fourHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);
fourHssfCell.setCellValue(newHSSFRichTextString(material.getName()));
fourHssfCell.setCellStyle(cellStyle);//设置单元格的样式
HSSFCellfiveHssfCell=hssfRow.createCell(4);
fiveHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);
fiveHssfCell.setCellValue(newHSSFRichTextString(String.valueOf(storage.getQty())));
fiveHssfCell.setCellStyle(cellStyle);//设置单元格的样式
HSSFCellsixHssfCell=hssfRow.createCell(5);
sixHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);
sixHssfCell.setCellValue(newHSSFRichTextString(String.valueOf(storage.getQtyLocked())));
sixHssfCell.setCellStyle(cellStyle);//设置单元格的样式
row++;
}
StringnewFileName=String.format("%s.%s","joinStocktaking-"+(newDate()).getTime(),"xls");
StringuploadPath=FileUtils.contractPath(System.getProperty(JAVA_IO_TMPDIR),newFileName);
FileOutputStreamfOut=newFileOutputStream(uploadPath);
workbook.write(fOut);
fOut.flush();
fOut.close();
returnAjaxResponse.createSuccess(newFileName);
}
Java操作excel(HSSF样式一)
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.List;
importjavax.servlet.ServletException;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFCellStyle;
importorg.apache.poi.hssf.util.HSSFColor;
importorg.apache.poi.hssf.util.Region;
importorg.apache.poi.hssf.usermodel.HSSFFont;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
HSSFCellStyle类代表一种单元格样式。
可以通过这些类来设置单元格的边框样式、背景颜色、字体、水平和垂直方式的对齐。
如:
HSSFWorkbookworkbook=newHSSFWorkbook(); //建立一个工作薄
HSSFCellStyletitleStyle=workbook.createCellStyle(); //在工作薄的基础上建立一个样式
titleStyle.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE); //设置边框样式
titleStyle.setBorderLeft((short)1); //左边框
titleStyle.setBorderRight((short)1); //右边框
titleStyle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE); //顶边框
titleStyle.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index); //填充的背景颜色
titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //填充图案
假设什么定义了一个样式,想在填充第一个单元格的时候填充红,第二格单元格填充蓝色。
如果:
HSSFCellStylecellStyle=workbook.createCellStyle(); //创建一个样式
cellStyle.setFillForegroundColor(HSSFColor.RED.index); //设置颜色为红色
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFCellcell1=row.createCell((short)1); //给单元格cell1填充红色
cell1.setCellStyle(cellStyle);
若:
cellStyle.setFillForegroundColor(HSSFColor.BLUE.index); //设置颜色为蓝色
HSSFCellcell2=row.createCell((short)2); //给单元格cell2填充蓝色
cell2.setCellStyle(cellStyle);
这个时候会出现的现象是单元格cell1和cell2都变成了蓝色。
遇到这种情况,要预先定义两种不同的单元格样式。
当一个EXCEL文件同时需要很多大同小异的单元格样式时,这样一一定义很麻烦。
POIHSSF提供了一个HSSFCellUtil类(在org.apache.poi. hssf.usermodel.contrib包),里面有几个方法可以绕过HSSFCellStyle直接设定单元格的样式,但这几个方法会抛出NestableException异 常,要处理这个异常,需要引用Apache的几个Common包:
commons-beanutils.jar
comm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单元格 样式