工作总结持续更新```

–ORACLE中新增字段

alter table 表名 add 字段 类型(50)

–Oracle中修改字段说明

comment on column 表名.字段 is ‘说明’;
oracle执行update语句卡住不动
https://blog.csdn.net/trigl/article/details/50725683

js中
正则: /^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/;   为数字小数点两位必须大于0
/^(?:[1-9]\d*|0)(?:\.\d{1,2})?$/ ; 为数字小数点两位可以为0

正则测试

http://tool.oschina.net/regex/?optionGlobl=global#

oracle中截取字段中某一个字符最后一次出现的位置到末尾

比如有一个a字段格式如下:

aaaa-bbbb-cc

要截取最后的cc

1,首先获取最后一次出现的- 的位置

instr(‘aaaa-bbbb-cc’,’-’,-1),这样就得到了最后一个-的下标

2,从最后一次出现-的位置开始截取字符串

下标加一,然后截取

substr('aaaa-bbbb-cc',instr('aaaa-bbbb-cc','-',-1)+1)

运行例子:

select substr('aaaa-bbbb-cc',instr('aaaa-bbbb-cc','-',-1)+1) from dual;

导出EXCEL表格 合并单元格

https://my.oschina.net/Bintsun/blog/740055#comments

	List> mapList = (List>) request.getSession().getAttribute("exportList");
         request.getSession().removeAttribute("exportList");
		 ServletOutputStream out = response.getOutputStream();
         response.reset();
         String excelName = "123" + DateUtilNew.getDateStr(new SimpleDateFormat("yyyy-MM-dd"), new Date()) + ".xls";
         // 转码防止乱码
         Transcoding.setResponse(request, response, excelName);
         
         // 新建一个导出页
         HSSFWorkbook workbook = new HSSFWorkbook();
         // 创建一个sheet页
         HSSFSheet sheet = workbook.createSheet("123");
         //设置表格默认列宽度为15个字符  
         sheet.setDefaultColumnWidth(15);  
         //生成一个样式,用来设置标题样式  
         HSSFCellStyle style = workbook.createCellStyle();  
         //设置这些样式  
         style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);  
         style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  
         style.setBorderBottom(HSSFCellStyle.BORDER_THIN);  
         style.setBorderLeft(HSSFCellStyle.BORDER_THIN);  
         style.setBorderRight(HSSFCellStyle.BORDER_THIN);  
         style.setBorderTop(HSSFCellStyle.BORDER_THIN);  
         //设置水平对齐的样式为居中对齐;  
         style.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
         //生成一个字体  
         HSSFFont font = workbook.createFont();  
         font.setColor(HSSFColor.VIOLET.index);  
         font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
         //把字体应用到当前的样式  
         style.setFont(font);
         HSSFCell currentCell = null;
		 //产生表格标题行  
         HSSFRow row = sheet.createRow(0); 
         String[] rowName = {"1",······};
         for(int k = 0; k < rowName.length; k++){  
             HSSFCell cell = row.createCell(k);  
             cell.setCellStyle(style);  
             HSSFRichTextString text = new HSSFRichTextString(rowName[k]);  
             cell.setCellValue(text);  
         }
		 //给单元格内容增加样式
         HSSFCellStyle cellStyle = workbook.createCellStyle();
         //设置水平对齐的样式为居中对齐;  
         cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
         //设置垂直对齐的样式为居中对齐; 
         cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
         //将查询出的数据设置到sheet对应的单元格中
	         for (int i = 0; i < mapList.size(); i++) {  
	             Map map = (Map) mapList.get(i);  
	             row = sheet.createRow(i + 1); 
	             int j = 0;
	            	 String PrjArr[]={"1",·······};
	                 for(j=0;j
	 //合并第一列和第13列,从第二行开始   0就是第一列
	 mergeCell(sheet, 0, 1, sheet.getLastRowNum(), workbook,12);
/**  
  	 * 合并单元格  
  	 * @param sheet 要合并单元格的excel 的sheet
  	 * @param cellLine  要合并的列  
  	 * @param startRow  要合并列的开始行  
  	 * @param endRow    要合并列的结束行  
  	 * @param offset    与合并的列相同合并方式的列的偏移量
  	 */  
  	private static void mergeCell(HSSFSheet sheet, int cellLine, int startRow, int endRow,HSSFWorkbook workBook,int offset){   

  	    // 样式对象    
  		HSSFCellStyle style = workBook.createCellStyle(); 

  		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  		
  		//获取开始行的数据,以便后面进行比较   
  		String s_will = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();   

  		int count = 0;
  		boolean flag = false;
  		for (int i = startRow+1; i <= endRow; i++) {
  			sheet.getRow(i).getCell(cellLine).setCellType(Cell.CELL_TYPE_STRING);
  			String s_current = sheet.getRow(i).getCell(cellLine).getStringCellValue(); 
  			if(s_will.equals(s_current))
  			{
  				s_will = s_current;
  				if(flag)
  				{
  					sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine,cellLine));
  					HSSFRow row = sheet.getRow(startRow-count);
  					if(null != sheet.getRow(startRow-count).getCell(cellLine)){
  						sheet.getRow(i).getCell(cellLine).setCellType(Cell.CELL_TYPE_STRING);
  						String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine).getStringCellValue(); 
  						HSSFCell cell = row.createCell(cellLine);
  						cell.setCellValue(cellValueTemp); // 跨单元格显示的数据    
  						cell.setCellStyle(style); // 样式    
  					}
  					
  					//合并与当前列相同合并方式的列
  					sheet.addMergedRegion(new CellRangeAddress(startRow-count,startRow,cellLine + offset,cellLine + offset));
  					HSSFRow row1 = sheet.getRow(startRow-count);
  					if(null != sheet.getRow(startRow-count).getCell(cellLine + offset)){
  						sheet.getRow(i).getCell(cellLine + offset).setCellType(Cell.CELL_TYPE_STRING);
  						String cellValueTemp = sheet.getRow(startRow-count).getCell(cellLine + offset).getStringCellValue(); 
  						HSSFCell cell = row1.createCell(cellLine + offset);
  						cell.setCellValue(cellValueTemp); // 跨单元格显示的数据    
  						cell.setCellStyle(style); // 样式    
  					}
  					count = 0;
  					flag = false;
  				}
  				startRow=i;
  				count++;   
  			}else{
  				flag = true;
  				s_will = s_current;
  			}
  			
			if (i == endRow && count > 0) {
				/** 防止前面的漏合单元格,这里重新再合一次 start ***/
				sheet.addMergedRegion(new CellRangeAddress(startRow - count,startRow, cellLine, cellLine));
				HSSFRow row = sheet.getRow(startRow - count);
				if (null != sheet.getRow(startRow - count).getCell(cellLine)) {
					sheet.getRow(i).getCell(cellLine).setCellType(Cell.CELL_TYPE_STRING);
					String cellValueTemp = sheet.getRow(startRow - count).getCell(cellLine).getStringCellValue();
					HSSFCell cell = row.createCell(cellLine);
					cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
					cell.setCellStyle(style); // 样式
				}

				sheet.addMergedRegion(new CellRangeAddress(startRow - count,
						startRow, cellLine + offset, cellLine + offset));
				HSSFRow row1 = sheet.getRow(startRow - count);
				if (null != sheet.getRow(startRow - count).getCell(cellLine + offset)) {
					sheet.getRow(i).getCell(cellLine + offset).setCellType(Cell.CELL_TYPE_STRING);
					String cellValueTemp = sheet.getRow(startRow - count).getCell(cellLine + offset).getStringCellValue();
					HSSFCell cell = row1.createCell(cellLine + offset);
					cell.setCellValue(cellValueTemp); // 跨单元格显示的数据
					cell.setCellStyle(style); // 样式
				}
				/** 防止前面的漏合单元格,这里重新再合一次 end ***/

				// 最后两条相同时,再合并
				if (sheet.getRow(i).getCell(cellLine).getStringCellValue().equals(sheet.getRow(i - 1).getCell(cellLine).getStringCellValue())) {
					sheet.addMergedRegion(new CellRangeAddress(endRow - count,endRow, cellLine, cellLine));
					String cellValueTemp2 = sheet.getRow(startRow - count).getCell(cellLine).getStringCellValue();
					HSSFRow row2 = sheet.getRow(startRow - count);
					HSSFCell cell2 = row2.createCell(cellLine);
					cell2.setCellValue(cellValueTemp2); // 跨单元格显示的数据
					cell2.setCellStyle(style); // 样式

					// 合并与当前列相同合并方式的列
					sheet.addMergedRegion(new CellRangeAddress(endRow - count,endRow, cellLine + offset, cellLine + offset));
					String cellValueTemp3 = sheet.getRow(startRow - count).getCell(cellLine + offset).getStringCellValue();
					HSSFRow row3 = sheet.getRow(startRow - count);
					HSSFCell cell3 = row3.createCell(cellLine + offset);
					cell3.setCellValue(cellValueTemp3); // 跨单元格显示的数据
					cell3.setCellStyle(style); // 样式
				}
			}
  		}
  	}

单元格字体样式方法

/** 
	 * 列头单元格样式
	 */    
  	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;
  	}

list的去除

使用list.contains方法

在这里插入代码片
List> newList = new  ArrayList>();
			for (int i = 0; i < list.size(); i++) {
				 if(!newList.contains(list.get(i))){
		                newList.add(list.get(i));
		            }
			}

你可能感兴趣的:(工作总结持续更新```)