poi 合并单元格 无边框问题

 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);
    }
时间: 2024-10-07 18:44:50

poi 合并单元格 无边框问题的相关文章

apache poi 合并单元格 设置边框

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); //创建一个样式 HSSFCellStyle styleBorderThin= wb.createCellStyle(); setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框 setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左

poi合并单元格同时导出excel

poi合并单元格同时导出excel POI进行跨行需要用到对象HSSFSheet对象,现在就当我们程序已经定义了一个HSSFSheet对象sheet. 跨第1行第1个到第2个单元格的操作为 sheet.addMergedRegion(new Region(0,(short)0,0,(short)1)); 跨第1行第1个到第2行第1个单元格的操作为 sheet.addMergedRegion(new Region(0,(short)0,1,(short)0)); 重点注意事项: 1.单元格CELL

JAVA poi 合并单元格

完整帮助代码:JAVA poi 帮助类 // 得到一个sheet中有多少个合并单元格 Integer sheetMergeCount = sheet.getNumMergedRegions(); for (Integer i = 0; i < sheetMergeCount; i++) { // 获取合并后的单元格 CellRangeAddress range = sheet.getMergedRegion(i); String cellValue = itemList.get(range.ge

Apache POI 合并单元格--简单解释版带Demo

合并单元格所使用的方法: sheet.addMergedRegion( CellRangeAddress  cellRangeAddress  ); CellRangeAddress  对象的构造方法需要传入合并单元格的首行.最后一行.首列.最后一列. CellRangeAddress cra=new CellRangeAddress(0, 3, 3, 9); 怎样把数据写入合并后的单元格中 首先要查看你 CellRangeAddress 构造方法的firstcol index 创建firstc

NPOI合并单元格后边框显示不正确?

这个方法能解决:SetEnclosedBorderOfRegion() 1 //merged cells on mutiple rows 2 CellRangeAddress region = new CellRangeAddress(2, 4, 0, 0); 3 sheet.AddMergedRegion(region); 4 5 //set enclosed border for the merged region 6 ((HSSFSheet)sheet).SetEnclosedBorder

java 利用poi 实现excel合并单元格后出现边框有的消失的解决方法

使用工具类RegionUtil CellRangeAddress cra = new CellRangeAddress(nowRowCount, nowRowCount + followSize-1, n, n); // 起始行, 终止行, 起始列, 终止列 Cell cell = sheet.getRow(nowRowCount).getCell(n); //设置单元格其他样式 cell.setCellStyle(cellStyle); // 使用RegionUtil类为合并后的单元格添加边框

poi导出Excel报表多表头双层表头、合并单元格

效果图: controller层方法: /**     *      * 导出Excel报表     * @param request     * @return     *      */    @RequestMapping("/export")    @ResponseBody    public void export(HttpServletRequest request,            HttpServletResponse response, String year

POI中合并单元格和样式的处理

合并单元格: 在POI中,合并单元格只需用到一个方法即可,即addMergedRegion(CellRangeAddress region), 此方法HSSFSheet的一个方法,即在工作薄对象下调用此方法 CellRangeAddress的构造方法如下: CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)     如:sheet.addMergedRegion(new CellRangeAddress(2

C# Excel行高、列宽、合并单元格、单元格边框线、冻结

private _Workbook _workBook = null;private Worksheet _workSheet = null;private Excel.Application _excelApplicatin = null; _excelApplicatin = new Excel.Application();_excelApplicatin.Visible = true;_excelApplicatin.DisplayAlerts = true; _workBook = _e