• java POI 单元格格式设置居中


     设置颜色,设置前景色

    style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex());
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

    设置居中对齐 

    //设置水平对齐的样式为居中对齐;  
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    //设置垂直对齐的样式为居中对齐; 
    style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

    自适应宽度

    //自动设置行高
    int colLength = cell.getStringCellValue().getBytes().length*256;  //
    sheet.setColumnWidth(col, colLength);
    
    
    package com.hwt.glmf.common;
     
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFRichTextString;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.CellRangeAddress;
    import org.apache.poi.hssf.util.HSSFColor;
     
    /**
     * 导出Excel公共方法
     * @version 1.0
     * 
     * @author wangcp
     *
     */
    public class ExportExcel extends BaseAction {
    	
    	//显示的导出表的标题
    	private String title;
    	//导出表的列名
    	private String[] rowName ;
    	
    	private List<Object[]>  dataList = new ArrayList<Object[]>();
    	
    	HttpServletResponse  response;
    	
    	//构造方法,传入要导出的数据
    	public ExportExcel(String title,String[] rowName,List<Object[]>  dataList){
    		this.dataList = dataList;
    		this.rowName = rowName;
    		this.title = title;
    	}
    			
    	/*
    	 * 导出数据
    	 * */
    	public void export() throws Exception{
    		try{
    			HSSFWorkbook workbook = new HSSFWorkbook();						// 创建工作簿对象
    			HSSFSheet sheet = workbook.createSheet(title);		 			// 创建工作表
    			
    			// 产生表格标题行
    	        HSSFRow rowm = sheet.createRow(0);
    	        HSSFCell cellTiltle = rowm.createCell(0);
    	        
    	        //sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面  - 可扩展】
    	        HSSFCellStyle columnTopStyle = this.getColumnTopStyle(workbook);//获取列头样式对象
    	        HSSFCellStyle style = this.getStyle(workbook);					//单元格样式对象
    	        
    	        sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, (rowName.length-1)));  
    	        cellTiltle.setCellStyle(columnTopStyle);
    	        cellTiltle.setCellValue(title);
        		
    			// 定义所需列数
    			int columnNum = rowName.length;
    			HSSFRow rowRowName = sheet.createRow(2);				// 在索引2的位置创建行(最顶端的行开始的第二行)
    			
    			// 将列头设置到sheet的单元格中
    			for(int n=0;n<columnNum;n++){
    				HSSFCell  cellRowName = rowRowName.createCell(n);				//创建列头对应个数的单元格
    				cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING);				//设置列头单元格的数据类型
        			HSSFRichTextString text = new HSSFRichTextString(rowName[n]);
        			cellRowName.setCellValue(text);									//设置列头单元格的值
        			cellRowName.setCellStyle(columnTopStyle);						//设置列头单元格样式
        		}
    			
        		//将查询出的数据设置到sheet对应的单元格中
    			for(int i=0;i<dataList.size();i++){
    				
    				Object[] obj = dataList.get(i);//遍历每个对象
    				HSSFRow row = sheet.createRow(i+3);//创建所需的行数
    				
    				for(int j=0; j<obj.length; j++){
    					HSSFCell  cell = null;   //设置单元格的数据类型
    					if(j == 0){
    						cell = row.createCell(j,HSSFCell.CELL_TYPE_NUMERIC);
    						cell.setCellValue(i+1);	
    					}else{
    						cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);
    						if(!"".equals(obj[j]) && obj[j] != null){
    							cell.setCellValue(obj[j].toString());						//设置单元格的值
    						}
    					}
    					cell.setCellStyle(style);									//设置单元格样式
    				}
    			}
    			//让列宽随着导出的列长自动适应
    			for (int colNum = 0; colNum < columnNum; colNum++) {
    	            int columnWidth = sheet.getColumnWidth(colNum) / 256;
    	            for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
    	                HSSFRow currentRow;
    	                //当前行未被使用过
    	                if (sheet.getRow(rowNum) == null) {
    	                    currentRow = sheet.createRow(rowNum);
    	                } else {
    	                    currentRow = sheet.getRow(rowNum);
    	                }
    	                if (currentRow.getCell(colNum) != null) {
    	                    HSSFCell currentCell = currentRow.getCell(colNum);
    	                    if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
    	                        int length = currentCell.getStringCellValue().getBytes().length;
    	                        if (columnWidth < length) {
    	                            columnWidth = length;
    	                        }
    	                    }
    	                }
    	            }
    	            if(colNum == 0){
    	            	sheet.setColumnWidth(colNum, (columnWidth-2) * 256);
    	            }else{
    	            	sheet.setColumnWidth(colNum, (columnWidth+4) * 256);
    	            }
    	        }
    			
    			if(workbook !=null){
    				try
    			    {
    			        String fileName = "Excel-" + String.valueOf(System.currentTimeMillis()).substring(4, 13) + ".xls";
    			        String headStr = "attachment; filename=\"" + fileName + "\"";
    			        response = getResponse();
    			        response.setContentType("APPLICATION/OCTET-STREAM");
    			        response.setHeader("Content-Disposition", headStr);
    			        OutputStream out = response.getOutputStream();
    			        workbook.write(out);
    			    }
    			    catch (IOException e)
    			    {
    			        e.printStackTrace();
    			    }
    			}
     
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		
    	}
    	
    	/* 
    	 * 列头单元格样式
    	 */    
      	public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {
      		
      		  // 设置字体
        	  HSSFFont font = workbook.createFont();
        	  //设置字体大小
        	  font.setFontHeightInPoints((short)11);
        	  //字体加粗
        	  font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        	  //设置字体名字 
        	  font.setFontName("Courier New");
        	  //设置样式; 
        	  HSSFCellStyle style = workbook.createCellStyle();
        	  //设置底边框; 
        	  style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        	  //设置底边框颜色;  
        	  style.setBottomBorderColor(HSSFColor.BLACK.index);
        	  //设置左边框;   
        	  style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        	  //设置左边框颜色; 
        	  style.setLeftBorderColor(HSSFColor.BLACK.index);
        	  //设置右边框; 
        	  style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        	  //设置右边框颜色; 
        	  style.setRightBorderColor(HSSFColor.BLACK.index);
        	  //设置顶边框; 
        	  style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        	  //设置顶边框颜色;  
        	  style.setTopBorderColor(HSSFColor.BLACK.index);
        	  //在样式用应用设置的字体;  
        	  style.setFont(font);
        	  //设置自动换行; 
        	  style.setWrapText(false);
        	  //设置水平对齐的样式为居中对齐;  
        	  style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        	  //设置垂直对齐的样式为居中对齐; 
        	  style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        	  
        	  return style;
        	  
      	}
      	
      	/*  
    	 * 列数据信息单元格样式
    	 */  
      	public HSSFCellStyle getStyle(HSSFWorkbook workbook) {
    	  	  // 设置字体
    	  	  HSSFFont font = workbook.createFont();
    	  	  //设置字体大小
    	  	  //font.setFontHeightInPoints((short)10);
    	  	  //字体加粗
    	  	  //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    	  	  //设置字体名字 
    	  	  font.setFontName("Courier New");
    	  	  //设置样式; 
    	  	  HSSFCellStyle style = workbook.createCellStyle();
    	  	  //设置底边框; 
    	  	  style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    	  	  //设置底边框颜色;  
    	  	  style.setBottomBorderColor(HSSFColor.BLACK.index);
    	  	  //设置左边框;   
    	  	  style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    	  	  //设置左边框颜色; 
    	  	  style.setLeftBorderColor(HSSFColor.BLACK.index);
    	  	  //设置右边框; 
    	  	  style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    	  	  //设置右边框颜色; 
    	  	  style.setRightBorderColor(HSSFColor.BLACK.index);
    	  	  //设置顶边框; 
    	  	  style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    	  	  //设置顶边框颜色;  
    	  	  style.setTopBorderColor(HSSFColor.BLACK.index);
    	  	  //在样式用应用设置的字体;  
    	  	  style.setFont(font);
    	  	  //设置自动换行; 
    	  	  style.setWrapText(false);
    	  	  //设置水平对齐的样式为居中对齐;  
    	  	  style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    	  	  //设置垂直对齐的样式为居中对齐; 
    	  	  style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
    	  	 
    	  	  return style;
      	
      	}
    }
    --------------------- 
    作者:艾伦蓝 
    来源:CSDN 
    原文:https://blog.csdn.net/lan12334321234/article/details/70049738 
    版权声明:本文为博主原创文章,转载请附上博文链接!
  • 相关阅读:
    CentOS7 安装 ElasticSearch7
    非易失性规划的原理与实现方法
    CV Recognition: From AlexNet To Inceptionv4
    有趣的Cache创新@HotChips'33
    计算架构的演进
    集合通信行为分析 基于NCCL
    Performance Scaling Laws
    单机互联拓扑获取 软件方式
    Operator Numerical Check
    论文笔记 — Learning to Collaborate: MultiScenario Ranking via MultiAgent Reinforcement Learning
  • 原文地址:https://www.cnblogs.com/grj001/p/12225620.html
Copyright © 2020-2023  润新知