public void merge(int startrow,int endstartrow,int startColumn,int endColumn){ sht.addMergedRegion(new CellRangeAddress(startrow, endstartrow, startColumn, endColumn)); }
合并单元格时候 合并后的单元格部分边框会看不见。从而进行处理。
下面是处理样式的 方法。 单元格设置边框
public void setStyle(int size, int color, boolean isBold, boolean isItalic, int backgroudColor, int align, int valign) { style = wb.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); HSSFFont font = wb.createFont(); font.setColor((short)color); font.setFontHeightInPoints((short)size); if (isBold) { font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); } else { font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); } font.setItalic(isItalic); style.setFont(font); style.setFillForegroundColor((short)backgroudColor); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setAlignment((short)align); style.setVerticalAlignment((short)valign); }
然而并无卵用,一直出现 单元格无边框。几个单元格都出现相同效果。总结是合并单元格的 最后一个单元格 的边框总是有一边不显示。
最后解决办法是挺简单的,只要给最后那个单元格里面放一个空字符串。问题就解决了。
ew.putData(1, 1, 1, "");
ew是放数据的。
public void putData(int shtidx, int rowidx, int colidx, Object data) { if (rowidx > bounder) { try { wb.getSheetAt(shtidx); } catch (IndexOutOfBoundsException e) { wb.createSheet(); wb.setSheetName(shtidx, "Sheet " + (shtidx + 1)); } sht = wb.getSheetAt(shtidx); } if (sht.getRow(rowidx) == null) { sht.createRow(rowidx); } row = sht.getRow(rowidx); if (row.getCell(colidx) == null) { row.createCell(colidx); } cell = row.getCell(colidx); if (data instanceof Double) { Double d = (Double)data; cell.setCellValue(d); } else if (data instanceof Integer) { Integer i = (Integer)data; cell.setCellValue(i); } else if (data instanceof Date) { Date d = (Date)data; cell.setCellValue(d); } else if (data instanceof String) { String s = (String)data; cell.setCellValue(s); } else { String s; if (data == null) { data = new String(""); } s = data.toString(); cell.setCellValue(s); } cell.setCellStyle(style); }
厚积薄发,笨鸟先飞。