java POI 单元格格式设置居中

时间:2025-02-22 08:39:28

 设置颜色,设置前景色

(.GREY_25_PERCENT.getIndex());
(FillPatternType.SOLID_FOREGROUND);

设置居中对齐 

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

自适应宽度

//自动设置行高
int colLength = ().getBytes().length*256;  //
(col, colLength);

package ;
 
import ;
import ;
import ;
import ;
 
import ;
 
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
 
/**
 * 导出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){
		 = dataList;
		 = rowName;
		 = title;
	}
			
	/*
	 * 导出数据
	 * */
	public void export() throws Exception{
		try{
			HSSFWorkbook workbook = new HSSFWorkbook();						// 创建工作簿对象
			HSSFSheet sheet = (title);		 			// 创建工作表
			
			// 产生表格标题行
	        HSSFRow rowm = (0);
	        HSSFCell cellTiltle = (0);
	        
	        //sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面  - 可扩展】
	        HSSFCellStyle columnTopStyle = (workbook);//获取列头样式对象
	        HSSFCellStyle style = (workbook);					//单元格样式对象
	        
	        (new CellRangeAddress(0, 1, 0, (-1)));  
	        (columnTopStyle);
	        (title);
    		
			// 定义所需列数
			int columnNum = ;
			HSSFRow rowRowName = (2);				// 在索引2的位置创建行(最顶端的行开始的第二行)
			
			// 将列头设置到sheet的单元格中
			for(int n=0;n<columnNum;n++){
				HSSFCell  cellRowName = (n);				//创建列头对应个数的单元格
				(HSSFCell.CELL_TYPE_STRING);				//设置列头单元格的数据类型
    			HSSFRichTextString text = new HSSFRichTextString(rowName[n]);
    			(text);									//设置列头单元格的值
    			(columnTopStyle);						//设置列头单元格样式
    		}
			
    		//将查询出的数据设置到sheet对应的单元格中
			for(int i=0;i<();i++){
				
				Object[] obj = (i);//遍历每个对象
				HSSFRow row = (i+3);//创建所需的行数
				
				for(int j=0; j<; j++){
					HSSFCell  cell = null;   //设置单元格的数据类型
					if(j == 0){
						cell = (j,HSSFCell.CELL_TYPE_NUMERIC);
						(i+1);	
					}else{
						cell = (j,HSSFCell.CELL_TYPE_STRING);
						if(!"".equals(obj[j]) && obj[j] != null){
							(obj[j].toString());						//设置单元格的值
						}
					}
					(style);									//设置单元格样式
				}
			}
			//让列宽随着导出的列长自动适应
			for (int colNum = 0; colNum < columnNum; colNum++) {
	            int columnWidth = (colNum) / 256;
	            for (int rowNum = 0; rowNum < (); rowNum++) {
	                HSSFRow currentRow;
	                //当前行未被使用过
	                if ((rowNum) == null) {
	                    currentRow = (rowNum);
	                } else {
	                    currentRow = (rowNum);
	                }
	                if ((colNum) != null) {
	                    HSSFCell currentCell = (colNum);
	                    if (() == HSSFCell.CELL_TYPE_STRING) {
	                        int length = ().getBytes().length;
	                        if (columnWidth < length) {
	                            columnWidth = length;
	                        }
	                    }
	                }
	            }
	            if(colNum == 0){
	            	(colNum, (columnWidth-2) * 256);
	            }else{
	            	(colNum, (columnWidth+4) * 256);
	            }
	        }
			
			if(workbook !=null){
				try
			    {
			        String fileName = "Excel-" + (()).substring(4, 13) + ".xls";
			        String headStr = "attachment; filename=\"" + fileName + "\"";
			        response = getResponse();
			        ("APPLICATION/OCTET-STREAM");
			        ("Content-Disposition", headStr);
			        OutputStream out = ();
			        (out);
			    }
			    catch (IOException e)
			    {
			        ();
			    }
			}
 
		}catch(Exception e){
			();
		}
		
	}
	
	/* 
	 * 列头单元格样式
	 */    
  	public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {
  		
  		  // 设置字体
    	  HSSFFont font = ();
    	  //设置字体大小
    	  ((short)11);
    	  //字体加粗
    	  (HSSFFont.BOLDWEIGHT_BOLD);
    	  //设置字体名字 
    	  ("Courier New");
    	  //设置样式; 
    	  HSSFCellStyle style = ();
    	  //设置底边框; 
    	  (HSSFCellStyle.BORDER_THIN);
    	  //设置底边框颜色;  
    	  ();
    	  //设置左边框;   
    	  (HSSFCellStyle.BORDER_THIN);
    	  //设置左边框颜色; 
    	  ();
    	  //设置右边框; 
    	  (HSSFCellStyle.BORDER_THIN);
    	  //设置右边框颜色; 
    	  ();
    	  //设置顶边框; 
    	  (HSSFCellStyle.BORDER_THIN);
    	  //设置顶边框颜色;  
    	  ();
    	  //在样式用应用设置的字体;  
    	  (font);
    	  //设置自动换行; 
    	  (false);
    	  //设置水平对齐的样式为居中对齐;  
    	  (HSSFCellStyle.ALIGN_CENTER);
    	  //设置垂直对齐的样式为居中对齐; 
    	  (HSSFCellStyle.VERTICAL_CENTER);
    	  
    	  return style;
    	  
  	}
  	
  	/*  
	 * 列数据信息单元格样式
	 */  
  	public HSSFCellStyle getStyle(HSSFWorkbook workbook) {
	  	  // 设置字体
	  	  HSSFFont font = ();
	  	  //设置字体大小
	  	  //((short)10);
	  	  //字体加粗
	  	  //(HSSFFont.BOLDWEIGHT_BOLD);
	  	  //设置字体名字 
	  	  ("Courier New");
	  	  //设置样式; 
	  	  HSSFCellStyle style = ();
	  	  //设置底边框; 
	  	  (HSSFCellStyle.BORDER_THIN);
	  	  //设置底边框颜色;  
	  	  ();
	  	  //设置左边框;   
	  	  (HSSFCellStyle.BORDER_THIN);
	  	  //设置左边框颜色; 
	  	  ();
	  	  //设置右边框; 
	  	  (HSSFCellStyle.BORDER_THIN);
	  	  //设置右边框颜色; 
	  	  ();
	  	  //设置顶边框; 
	  	  (HSSFCellStyle.BORDER_THIN);
	  	  //设置顶边框颜色;  
	  	  ();
	  	  //在样式用应用设置的字体;  
	  	  (font);
	  	  //设置自动换行; 
	  	  (false);
	  	  //设置水平对齐的样式为居中对齐;  
	  	  (HSSFCellStyle.ALIGN_CENTER);
	  	  //设置垂直对齐的样式为居中对齐; 
	  	  (HSSFCellStyle.VERTICAL_CENTER);
	  	 
	  	  return style;
  	
  	}
}
--------------------- 
作者:艾伦蓝 
来源:**** 
原文:/lan12334321234/article/details/70049738 
版权声明:本文为博主原创文章,转载请附上博文链接!