其中contextstyle.setDataFormat(df.getFormat("0_ "));要特别注意"0_ ",下划线后面有一个空格!!!,缺少空格则不会导出为数值类型。
注意空格!!!注意空格!!!注意空格!!!
-
- /**
- * 设置Excel单元格为数值类型便于公式运算
- *
- * @param workbook
- * @param contextstyle
- * @param cell
- * @param data
- */
- public static void setNumberFormat(SXSSFWorkbook workbook, CellStyle contextstyle, SXSSFCell cell,Object data){
- boolean isNum = false;//data是否为数值型
- boolean isInteger=false;//data是否为整数
- boolean isPercent=false;//data是否为百分数
- if (data != null || "".equals(data)) {
- //判断data是否为数值型
- isNum = data.toString().matches("^(-?\\d+)(\\.\\d+)?$");
- //判断data是否为整数(小数部分是否为0)
- isInteger=data.toString().matches("^[-\\+]?[\\d]*$");
- //判断data是否为百分数(是否包含“%”)
- isPercent=data.toString().contains("%");
- }
-
- //如果单元格内容是数值类型,设置data的类型为数值类型
- if (isNum && !isPercent) {
- // 此处设置数据格式
- DataFormat df = workbook.createDataFormat();
- if (isInteger) {
- contextstyle.setDataFormat(df.getFormat("0_ "));//数据格式只显示整数
- }else{
- contextstyle.setDataFormat(df.getFormat("0.00_ "));//保留两位小数点
- }
- // 设置单元格格式
- cell.setCellStyle(contextstyle);
- // 设置单元格内容为double类型
- cell.setCellValue(Double.parseDouble(data.toString()));
- } else {
- if (data != null && !"".equals(data)) {
- cell.setCellStyle(contextstyle);
- // 设置单元格内容为字符型
- cell.setCellValue(data.toString());
- }
- }
- }
============================设置合并单元格================================
- //合并单元格
- CellRangeAddress cellRange = new CellRangeAddress(deptRowIndex, deptRowEndIndex-1, (short) 1, (short) 1);
- sheet.addMergedRegion(cellRange);
================设置合并单元格的边框======================================
- RegionUtil.setBorderTop(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);
- RegionUtil.setBorderLeft(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);
- RegionUtil.setBorderRight(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);
- RegionUtil.setBorderBottom(CellStyle.BORDER_THIN, rangeAddress, sheet, workBook);
=====对Excel进行加密==【打开Excel需要指定密码】====
