精华内容
下载资源
问答
  • POI读写Excel-操作包含合并单元格操作 在上篇博客中写到关于Excel操作解析成相关的类,下面将写入一种ExcelExcel表格读取和写入。 对于Excel表格操作,最重要的是创建workBook。其操作顺序是: 1.获得...

    POI读写Excel-操作包含合并单元格操作

    在上篇博客中写到关于Excel操作解析成相关的类,下面将写入一种Excel对Excel表格读取和写入。

    对于Excel表格操作,最重要的是创建workBook。其操作顺序是:

    1.获得WorkBook实例;


    Workbook workbook = WorkbookFactory.create(file);

    2.获得每一个Sheet对象,也就是Excel表格的每一个表格


    for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
      Sheet sheet = workbook.getSheetAt(i);
    }

     3.获得sheet中的每一行

     
    for (int i = sheet.getFirstRowNum() ; i < sheet.getLastRowNum(); i++){
      Row row  =  sheet.getRow(i);
    }

     4.对每一行获得单元格数据

     
    for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) {
      Cell cell = row.getCell(}
       

     5.解析每个单元格的数据

    那么对于单元格的合并问题:

    使用sheet的addMergedRegion方法:

     
    sheet.addMergedRegion(new CellRangeAddress( int startRow,int endRow, int startCol, int endCol));// 设置单元格合并

     在这里需要注意:

    1.使用该方法时,需要先创建合并的单元行,也就是从startRow到EndRow的每一行

    2.startRow应大于等于endRow

    3.通过sheet.getRow(startRow).createCell(startCol);创建cell

    具体实现见GitHub上的代码:https://github.com/JinGangRed/poi-exceluntil

    展开全文
  • package com.oa.action.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.p
      
    package com.oa.action.test;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.HSSFColor;
    import org.apache.poi.ss.util.CellRangeAddress;
    
    
    public class Test02 {
    	
    	/**
    	 * <pre>main(
    	 * 1.  创建一个webbook,对应一个Excel文件
    	 * 2.在webbook中创建一个sheet,对应excel中的sheet(工作表)
    	 * 3.创建Excel工作表的行
    	 * 4.创建Excel工作表的列
    	 * 5.合并单元格
    	 * 6.输出流输出内容
    	 * 修改时间: 
    	 * 修改备注: 
    	 * @param args</pre>
    	 */
    	public static void main(String[] args) {
    		// 第一步,创建一个webbook,对应一个Excel文件 
    		HSSFWorkbook wb = new  HSSFWorkbook();
    		//在webbook中创建一个sheet,对应excel中的sheet(工作表)
    		HSSFSheet sheet = wb.createSheet("cells");
    		//样式的设置内容居中,字体颜色红色,背景色
    		HSSFCellStyle style1 = wb.createCellStyle();
    		HSSFFont f  = wb.createFont();      
    		f.setFontHeightInPoints((short) 20);//字号       
    		f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗   
    		f.setColor(HSSFColor.RED.index);//设置字体颜色
    		style1.setFont(f);      
    		style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);//内容左右居中    	
    		style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//内容上下居中
    		//创建sheet的(行)(下标从0开始)第5行的第6,7,8列
    		HSSFRow row = sheet.createRow(5);
    		//第六列赋值
    		row.createCell(6).setCellValue("hello");
    		row.createCell(7);
    		row.createCell(8);
    		//创建sheet的列,第9行的第6,7,8列
    		HSSFRow row2 = sheet.createRow(9);
    		row2.createCell(6);
    		row2.createCell(7);
    		row2.createCell(8);
    		//第一个参数指表格从上往下数下标从第几之后开始合并
    		//第二个参数是合并几行(高度)
    		//第三个是表格从左往右数下标为*列之后开始合并(开始)
    		//第四个是合并列至下标为* 的一列(结束)
    		//sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCol, lastCol)
    		sheet.addMergedRegion(new CellRangeAddress(5, 9, 6, 8));
    		try {
    			FileOutputStream fos = new FileOutputStream("g:/cells_test.xls");
    			wb.write(fos);
    			fos.close();
    			fos.flush();
    			System.out.println("导出");
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		
    	}
    }
    

    展开全文
  • 遇到问题:使用poi导出excel的时候,合并单元格后没有边框,如下图: 个人用的解决方法如下: /** * 合并单元格 * @param sheet * @param firstRow * @param lastRow * @param firstCol * @param ...

    遇到问题:使用poi导出excel的时候,合并单元格后没有边框,如下图:
    在这里插入图片描述
    个人用的解决方法如下:

    /**
    	 * 合并单元格
    	 * @param sheet
    	 * @param firstRow
    	 * @param lastRow
    	 * @param firstCol
    	 * @param lastCol
    	 */
    	private static void mergeCell(HSSFSheet sheet,Integer firstRow,Integer lastRow,Integer firstCol,Integer lastCol,HSSFWorkbook wb){
    		CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
    		sheet.addMergedRegion(region);
    		//给合并单元格加样式
    		setBorderStyle(HSSFCellStyle.BORDER_THIN, region, sheet, wb);
    	}
    

    用poi自带的工具类来处理合并后的边框

    /**
     * 用poi自带的工具类来处理合并后的边框
     * @param border
     * @param region
     * @param sheet
     * @param wb
     */
    public static void  setBorderStyle(int border,CellRangeAddress region,HSSFSheet sheet,HSSFWorkbook wb){
    	RegionUtil.setBorderBottom(border,region, sheet, wb);
    	RegionUtil.setBorderLeft(border,region, sheet, wb);
    	RegionUtil.setBorderRight(border,region, sheet, wb);
    	RegionUtil.setBorderTop(border,region, sheet, wb);
    }
    

    在这里插入图片描述

    亲测有效,互相学习哇

    展开全文
  • poi导出excel 合并单元格 边框问题

    千次阅读 2019-01-15 11:26:02
    poi导出excel 纵向合并单元格后,边框消失的问题。 如上图,原本是合并了A/B/C/D/E列的第2、3行。但边框却有了。 网上搜索了几篇文章,最后是以下网址中得到答案: ... CellRangeAddress r...

    poi导出excel 纵向合并单元格后,边框消失的问题。

    如上图,原本是合并了A/B/C/D/E列的第2、3行。但边框却有了。

    网上搜索了几篇文章,最后是以下网址中得到答案:

    https://zhouchaofei2010.iteye.com/blog/1070857

    具体解决办法记录如下:

    //合并A~J列第1、2行:
                CellRangeAddress region1 = new CellRangeAddress(1, 2, 0, 0);
                sheet.addMergedRegion(region1);
                setBorderStyle(HSSFCellStyle.BORDER_THIN, region1, sheet, wb);   //给合并过的单元格加边框

                。。。。。。后面代码类似,省略。

    //很关键:

    //在sheet里创建第二行  
                //HSSFRow row2 =sheet.createRow(1);  //不能这样直接新增,否则直接createRow会覆盖先前合并时定义的边框样式。
                HSSFRow row2 = sheet.getRow(1);
                if(row2==null)
                {
                    row2 = sheet.createRow(1);
                }
                //在sheet里创建第3行  
                //HSSFRow row3 = sheet.createRow(2);
                HSSFRow row3 = sheet.getRow(2);
                if(row3==null)
                {
                    row3 = sheet.createRow(2);
                }

    //用poi自带的工具类来处理合并后的边框
      public void setBorderStyle(int border,CellRangeAddress region,HSSFSheet sheet,HSSFWorkbook wb){
            RegionUtil.setBorderBottom(border,region, sheet, wb);  
            RegionUtil.setBorderLeft(border,region, sheet, wb);  
            RegionUtil.setBorderRight(border,region, sheet, wb);  
            RegionUtil.setBorderTop(border,region, sheet, wb);  
        }
        
      /*
      //也可用以下方法
       public void setBorderStyle(int border,CellRangeAddress region,HSSFSheet sheet,HSSFWorkbook wb){
            HSSFCellStyle cs = wb.createCellStyle(); // 样式对象 
            cs.setBorderBottom((short) border);  
            cs.setBorderTop((short) border);  
            cs.setBorderLeft((short) border);  
            cs.setBorderRight((short) border);  
           
            setRegionStyle( cs, region, sheet);  
        } 
        
         private static void setRegionStyle(HSSFCellStyle cs, CellRangeAddress region, HSSFSheet sheet){  
            for(int i=region.getFirstRow();i<=region.getLastRow();i++){  
                HSSFRow row=sheet.getRow(i);  
                if(row==null) row=sheet.createRow(i);  
                for(int j=region.getFirstColumn();j<=region.getLastColumn();j++){  
                    HSSFCell cell=row.getCell(j);  
                    if( cell==null){  
                        cell=row.createCell(j);  
                        cell.setCellValue("");  
                    }  
                     cell.setCellStyle(cs);  
                }  
            }  
        }  
        */

     

     

     

    展开全文
  • 用户需要导出自定义表格,其中合并单元格样式遇到的问题,合并后只显示第一行第一列的边框,其他边框不显示,于是遍查百度,寻到一点思路①了解Excel绘制原理②了解绘制Excel顺序③绘制Excel单元格的三种方法先传...
  • 首先1-4行要求合并单元格,其中第5行第5,6列也要求合并;同时后面的列是可变化的。于是本人设计1-5行的1-6列是固定的。 同时在实践过程之中可以设置单元字体和样式。本项目使用POI3.17版本实现 2、代码实现 2.1...
  • 导出EXCEL 在实际的开发过程当中,我们会遇到一些比较复杂的导出需求,例如需要导出的实体类中需要嵌套集合对象等,正好最近碰到了所以分享出来,希望对大家有帮助。 导出结果:![des]...
  • import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; i.....
  • importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apach...
  • POI导出Excel合并单元格时的边框问题

    千次阅读 2017-02-21 00:14:09
    Excel合并单元格,仅使用的是下面的代码 CellRangeAddress cra = new CellRangeAddress(0, 0, 0, (rowName.length-1)); sheet.addMergedRegion(cra);可以顺利地合并指定区域的单元格,但是其边框却无法显示...
  • importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apach...
  • 由于生成文件不能落地,使用SXSSFWorkBook来对excel导出工作 生成excel步骤: 1.创建workbook SXSSFWorkbook workbook=new SXSSFWorkbook(rowAccessWindowSize); rowAccessWindowSize:内存中保留的行数(当值...
  • 1 工程所需jar包如下:commons-codec-1.5.jarcommons-logging-1.1.jarlog4j-1.2.13.jarjunit-3.8.1.jarpoi-3.9-... * 导出设备信息Excel * @param form 和 HTTP 请求相关的表格对象 * @param resources...
  • POI创建与设置Excel合并单元格 话不多说上栗子 //准备工作 XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("sheet1"); XSSFCreationHelper creationHelper = wb.getCreationHelper...
  • POI 导出excel文件下拉框问题 1.https://blog.csdn.net/sdaujsj1/article/details/81004209 java导出Excel合并单元格 2https://blog.csdn.net/datangxiajun/article/details/78308979
  • Java poi导出excel合并标题单元格

    万次阅读 2015-12-11 11:12:52
    Java poi导出excel合并标题单元格
  • poi导出excel 3.14版本合并单元格报错

    千次阅读 2018-03-01 18:40:02
    poi导出excel合并单元格的时候 , 执行sheet.addMergedRegion(new CellRangeAddress(rowNumber, (short) rowNumber, 0, (short) 1)); poi3.14版本会报错找不到方法 ,3.12版本没问题...
  • ![图片说明](https://img-ask.csdn.net/upload/201508/24/1440410782_188927.png) 如同代码合并Excel也能看出合并了,但是为什么计数就是不是1呢?怎么解决???
  • 使用poi导出excel的时候,合并单元格后没有边框我先写了一个样式// 红色加粗居中 样式1HSSFCellStyle style = workbook.createCellStyle();style.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 下边框style....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390
精华内容 156
关键字:

poi导出excel合并单元格