POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写(copy)

您所在的位置:网站首页 wps设置单元格格式日期无变化 POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写(copy)

POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写(copy)

2024-07-10 00:38| 来源: 网络整理| 查看: 265

HSSFWorkbook demoWorkBook = new HSSFWorkbook();   

            HSSFSheet demoSheet = demoWorkBook.createSheet("The World's 500 Enterprises");   

            HSSFCell cell = demoSheet.createRow(0).createCell(0);

 

第一种:日期格式

 

            cell.setCellValue(new Date(2008,5,5));

            //set date format

            HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

            HSSFDataFormat format= demoWorkBook.createDataFormat();

            cellStyle.setDataFormat(format.getFormat("yyyy年m月d日"));

            cell.setCellStyle(cellStyle);

 

第二种:保留两位小数格式

            cell.setCellValue(1.2);

            HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

            cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));

            cell.setCellStyle(cellStyle);

 

这里与上面有所不同,用的是HSSFDataFormat.getBuiltinFormat()方法,之所以用这个,是因为0.00是Excel内嵌的格式,完整的Excel内嵌格式列表大家可以看这个窗口中的自定义列表:

 这里就不一一列出了

 

第三种:货币格式

 

            cell.setCellValue(20000);

            HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

            HSSFDataFormat format= demoWorkBook.createDataFormat();

            cellStyle.setDataFormat(format.getFormat("¥#,##0"));

            cell.setCellStyle(cellStyle);

 

第四种:百分比格式

 

            cell.setCellValue(20);

            HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

            cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));

            cell.setCellStyle(cellStyle);

  此种情况跟第二种一样

 

第五种:中文大写格式

 

            cell.setCellValue(20000);

            HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

            HSSFDataFormat format= demoWorkBook.createDataFormat();

            cellStyle.setDataFormat(format.getFormat("[DbNum2][$-804]0"));

            cell.setCellStyle(cellStyle);

 

第六种:科学计数法格式

 

            cell.setCellValue(20000);

            HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();

            cellStyle.setDataFormat( HSSFDataFormat.getBuiltinFormat("0.00E+00"));

            cell.setCellStyle(cellStyle);

此种情况也与第二种情况一样

===============================

  日期:

 public static Cell writeDateValue(Workbook book, Sheet sheet, int row,   int column, Date value) {  Row poiRow = sheet.getRow(row);  CreationHelper createHelper = book.getCreationHelper();  if (poiRow == null) {   poiRow = sheet.createRow(row);  }  Cell poiCell = poiRow.getCell(column);

  if (poiCell == null) {   poiCell = poiRow.createCell(column);  }

  CellStyle cellStyle = book.createCellStyle();  cellStyle.setDataFormat(createHelper.createDataFormat().getFormat(    "yyyy-mm-dd"));  if (value != null) {   poiCell.setCellValue(value);  } else {   poiCell.setCellValue(new Date());  }  poiCell.setCellStyle(cellStyle);

  return poiCell; }

  数字:

 public static Cell writeNumericValue(Sheet sheet, int row, int column,   Double value) {  Row poiRow = sheet.getRow(row);  if (poiRow == null) {   poiRow = sheet.createRow(row);  }  Cell poiCell = poiRow.getCell(column);

  if (poiCell != null) {   poiRow.removeCell(poiCell);  }  poiCell = poiRow.createCell(column);  poiCell.setCellType(Cell.CELL_TYPE_NUMERIC);  poiCell.setCellValue(value);  return poiCell; }

 

===============================

public class CreateCells { /** * 文档对象 HSSFWorkbook ;表单对象 HSSFSheet ;行对象 HSSFRow ;列对象 HSSFCell * excell的格子单元 HSSFFont excell字体 HSSFName 名称 HSSFDataFormat 日期格式 HSSFHeader * sheet头 HSSFFooter sheet尾 HSSFCellStyle cell样式 */ public static void main(String[] args) throws IOException { // 建立新HSSFWorkbook对象 HSSFWorkbook workbook = new HSSFWorkbook(); // 建立新的sheet对象 // Create a row and put some cells in it.Rows are 0 based. HSSFSheet sheet = workbook.createSheet("表单1"); // 建立新行 // Create a cell and put a value in it. HSSFRow row = sheet.createRow((short) 0); //修改当前行 默认行高 列宽 //行高 sheet.setDefaultRowHeightInPoints(10); //列款宽 sheet.setDefaultColumnWidth(10); //设置特定单元格的宽度 sheet.setColumnWidth(4, 20*256); sheet.setColumnWidth(5, 30*256); sheet.setColumnWidth(6, 30*256); // 整数类型的cell样式 //HSSFDataFormat.getBuiltinFormat("0.00") 字符串的内容是 Excel有的格式 HSSFCellStyle numStyle = workbook.createCellStyle(); numStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0")); //创建1列 HSSFCell cellNum = row.createCell(0); cellNum.setCellValue(1); cellNum.setCellStyle(numStyle); // 浮点类型的cell样式 HSSFCellStyle doubleStyle = workbook.createCellStyle(); doubleStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00")); HSSFCell cellDouble = row.createCell(1); cellDouble.setCellValue(1.2); cellDouble.setCellStyle(doubleStyle); //字符串类型的cell样式 HSSFCellStyle stringStyle = workbook.createCellStyle(); stringStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("G/通用格式")); HSSFCell cellString= row.createCell(2); cellString.setCellValue("test"); cellString.setCellStyle(stringStyle); //添加cell布尔类型的值 row.createCell(3).setCellValue(true); //日期类型的cell样式 yyyy-m-d h:mm:ss AM/PM HSSFCellStyle dateStyle = workbook.createCellStyle(); dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); HSSFCell dCell = row.createCell(4); dCell.setCellValue(new Date()); dCell.setCellStyle(dateStyle); //设置cell编码解决中文高位字节截断 HSSFCell csCell = row.createCell(5); csCell.setCellType(HSSFCell.ENCODING_UTF_16); csCell.setCellValue("中文测试_Chinese Words Test"); // 设置 背景色 边框 HSSFCellStyle style1 = workbook.createCellStyle(); //前景色和后景色都要有 否则会出网格 style1.setFillForegroundColor(new HSSFColor.YELLOW().getIndex()); style1.setFillBackgroundColor(new HSSFColor.YELLOW().getIndex()); //设置边框 style1.setBorderBottom((short) 1); style1.setBorderTop((short) 1); style1.setBorderLeft((short) 1); style1.setBorderRight((short) 1); //问题:用poi将一个cell中的字体设置成了红色,结果用excell打开后,这个cell中只有前面一个或几个字为红色 //HSSFFont font = workbook.createFont(); font.setColor(HSSFFont.COLOR_RED); //先從Cell中把HSSFRichTextString取出來 //然后HSSFRichTextString對象.applyFont(font) //最后再把HSSFRichTextString對象set回到cell中就行了。。。。。 //设置字体样式===================================== HSSFFont font = workbook.createFont(); //字体位置 上 下 左 右 //font.setTypeOffset((short)0); //字体宽度 font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); //字体高度 font.setFontHeightInPoints((short)8); //字体颜色 font.setColor(HSSFFont.COLOR_RED); //================================================= style1.setFont(font); /** * 注意这句代码, style1.setFillPattern, 如果你在你的程序中不设置fill pattern,那么 * 你上面设置的前景色和背景色就显示不出来.网络上很多文章都没有设置fillpattern * 如果不改变样式 不需要添加(如:居中) */ style1.setFillPattern(HSSFCellStyle.SPARSE_DOTS); HSSFCell cellCH = row.createCell(6); cellCH.setCellValue("中文测试_Chinese Words Testsss"); cellCH.setCellStyle(style1); //货币样式 HSSFCellStyle moneyStyle = workbook.createCellStyle(); moneyStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0")); HSSFCell cell12 = row.createCell(7); cell12.setCellValue((double) 10000000); cell12.setCellStyle(moneyStyle); // 错误显示 row.createCell(8).setCellType(HSSFCell.CELL_TYPE_ERROR); //合并单元格 int startRowNo=0; int endRowNo=0; int startCellNo=9; int endCellNo=10; sheet.addMergedRegion(new CellRangeAddress(startRowNo, endRowNo,startCellNo, endCellNo)); HSSFCell cell = row.createCell(9); cell.setCellValue("合并"); //即垂直居中对齐且水平居中对齐 居中后背景颜色变化了 HSSFCellStyle style = workbook.createCellStyle(); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平 //如果不改变样式 不需要添加 //style.setFillPattern(HSSFCellStyle.SPARSE_DOTS); cell.setCellStyle(style); FileOutputStream fileOut = new FileOutputStream("e:/workbook.xls"); workbook.write(fileOut); fileOut.close(); } }

 

===============================



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3