精华内容
下载资源
问答
  • poi删除指定单元格
    2021-03-05 13:34:04

    /**

    * 删除列

    * @param path excel路径

    * @param col要删除的列

    */

    public static void revomeColCell(String path, int col) {

    try {

    FileInputStream fis = new FileInputStream(new File(path));

    HSSFWorkbook hb = new HSSFWorkbook(fis);

    int row = hb.getSheetAt(0).getLastRowNum();

    HSSFSheet hs = hb.getSheetAt(0);

    for (int i = 0; i 

    int totalCol = hb.getSheetAt(0).getRow(i).getLastCellNum();

    HSSFRow hr = hs.getRow(i);

    for (int j = 0; j 

    if (col == j) {// 表示要删除的行

    //移除当前列,把后面的列前移

    for (int k = j; k 

    HSSFCell hc = hr.getCell(k);

    if (null != hc) {

    hr.removeCell(hc);

    }

    if (null != hr.getCell(k + 1)) {

    hr.moveCell(hr.getCell(k + 1), (short) k);

    }

    }

    }

    }

    }

    FileOutputStream fos = new FileOutputStream(path);

    hb.write(fos);

    fos.flush();

    fis.close();

    fos.close();

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    删除行你看一下,HSSFSheet里的shiftRows(int startRow,

    int endRow, int n) 方法。这个方法的原理也是把下面的行住上面移,覆盖了你要删除的行。

    更多相关内容
  • POI DataValidation 删除数据有效性验证

    千次阅读 2019-10-14 19:32:28
    POI DataValidation

    项目中用到Apache POI来处理Execl,模板文件中有数据有效性的验证,处理时需要添加行,导致原有需要数据有效验证的单元格向下移动。经过测试发现POI对于数据有效性验证只能添加,不能删除。
    在网上看到一篇文章作者的作法是可以通过直接修改execl的XML节点的方式,达到修改,删除数据有效性的目的。(原文链接
    本人项目需求不需要修改只需要删除在重新添加即可,以下是具体代码实现。

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    public class RemoveDataValidation {
    
    	public static void main(String[] args) {
    
    		String url = "D:\\test.xlsx";
    		InputStream inputStream = null;
    		OutputStream outputStream1 = null;
    		String newFileName = "D:\\new_test.xlsx";
    		XSSFWorkbook wb = null;
    		try {
    			inputStream = new FileInputStream(url);
    			wb = new XSSFWorkbook(inputStream);
    			XSSFSheet ws = wb.getSheet("Sheet2");
    
    			delValidations(ws);
    
    			outputStream1 = new FileOutputStream(newFileName);
    			wb.write(outputStream1);
    		} catch (FileNotFoundException e1) {
    			// TODO Auto-generated catch block
    		} catch (IOException e) {
    			// TODO
    		} finally {
    
    			try {
    				inputStream.close();
    				wb.close();
    				outputStream1.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    		}
    
    	}
    
    	public static void delValidations(XSSFSheet ws) {
    
    		try {
    
    			CTWorksheet worksheet = (CTWorksheet) ReflectHelper.getValueByFieldName(ws, "worksheet");
    			Node domNode = worksheet.getDomNode();
    			NodeList childNodes = domNode.getChildNodes();
    			int size = childNodes.getLength();
    
    			for (int i = 0; i < size; i++) {
    				Node childNode = childNodes.item(i);
    				// if node name is dataValidations
    				if ("dataValidations".equals(childNode.getNodeName())) {
    					// remove childnode from worksheet
    					domNode.removeChild(childNode);
    					break;
    				}
    			}
    
    		} catch (Exception e) {
    			// TODO
    		}
    
    	}
    
    展开全文
  • POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是:sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 2));自适应列宽度:sheet.autoSizeColumn(1);sheet....

    POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是:

    sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 2));

    自适应列宽度:

    sheet.autoSizeColumn(1);

    sheet.autoSizeColumn(1, true);

    这两种方式都是自适应列宽度,但是注意这个方法在后边的版本才提供,poi的版本不要太老。 注意:第一个方法在合并单元格的的单元格并不好使,必须用第二个方法。

    sheet.setColumnWidth(m, “列名”.getBytes().length*2*256);

    这个方法是计算字符串的长度,以便设置列宽,该方法在解决中文的问题上比较好,前面两种方法对中文不好好用。。。。

    还有在自适应宽度的时候,有时候遇到单元格是公式单元格,自适应不起作用,那是因为单元格存的是公式,并不是真正的数据,解决方法:

    HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet.getWorkbook());

    CellValue cell71Val = evaluator.evaluate(cell71);

    cell71.setCellValue(cell71Val.getNumberValue());

    将格式化后的数据再次set进去,就是真正的值了。

    //字体

    HSSFFont font = workbook.createFont();

    font.setFontName("仿宋_GB2312");

    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示

    font.setFontHeightInPoints((short) 12);

    HSSFCellStyle style = workbook.createCellStyle();

    //设置颜色

    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

    style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);//前景颜色

    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//填充方式,前色填充

    //边框填充

    style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框

    style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框

    style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框

    style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

    style.setFont(font);

    style.setWrapText(false);

    POI 实现合并单元格以及列自适应宽度

    POI是apache提供的一个读写Excel文档的开源组件,在操作excel时常要合并单元格,合并单元格的方法是: sheet.addMergedRegion(new CellRangeAddress ...

    java导出标题多行且合并单元格的EXCEL

    场景:项目中遇到有需要导出Excel的需求,并且是多行标题且有合并单元格的,参考网上的文章,加上自己的理解,封装成了可自由扩展的导出工具 先上效果,再贴代码: 调用工具类进行导出: public st ...

    C&num;DataTable导出Excel,并实现合并单元格

    asp.net webwofrm后台代码----------建议Framework4.0及以上,3.5试过出现好多莫名错误... 首先导入两个程序集.我的是 office2003,引用的COM里面的  ...

    Java导出Excel表&lpar;poi&rpar;名中文乱码问题处理

    String _filename = ValidateTools.date2Str(da ...

    poi读取合并单元格

    poi读取合并单元格 学习了:http://blog.csdn.net/ycb1689/article/details/9764191 进行了列合并单元格的修正:原来是我自己找错了地方: import ...

    poi导出excel合并单元格&lpar;包括列合并、行合并&rpar;

    1 工程所需jar包如下:commons-codec-1.5.jarcommons-logging-1.1.jarlog4j-1.2.13.jarjunit-3.8.1.jarpoi-3.9-2012 ...

    php 数据导出到excel 2种带有合并单元格的导出

    具体业务层面 可能会有所不同.以下两种方式涉及的合并单元格地方有所不同,不过基本思路是一致的. 第一种是非插件版本.可能更容易理解点,基本思路就是 组装table 然后 读取 输出到excel上.缺点 ...

    poi获取合并单元格内的第一行第一列的值

    当读取如图所示的excel时,显示为第1行 第1列 的内容是:合并单元格 其它在合并单元格区域内的单元格不显示 示例代码如下: import java.io.FileInputStream; impo ...

    C&num;导出Excel按照指定格式设置单元格属性值

    最近项目中一直在写XML.Table.Excel之间的转化.之前一直都是不考虑格式的导出,今天给出一个格式,让按照格式导出,还真把我这新手为难了一翻,网上给出的资料基本一样.为了一个单元格文字变色纠结 ...

    随机推荐

    利用css中的background-position定位图片

    今天遇到一个新鲜的问题,如果定位一个设计师设计的图片.例子如下: 实现只显示每一个图标,主要是将图片等分,然后通过background-position来控制,注意等分的时候要减一,第一个百分比表示x ...

    leetcode 82&period; Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

    D3 学习资源

    发现这个网站还是挺不错的:http://www.ourd3js.com/wordpress/

    Unity3D之Mecanim动画系统学习笔记(七):IK(反向动力学)动画

    什么是IK? IK(Inverse Kinematics)即反向动力学,即可以使用场景中的各种物体来控制和影响角色身体部位的运动,一般来说骨骼动画都是传统的从父节点到子节点的带动方式(即正向动力学), ...

    Poj 3030 Nasty Hacks

    1.Link: http://poj.org/problem?id=3030 2.Content: Nasty Hacks Time Limit: 1000MS   Memory Limit: 655 ...

    Core Animation之CABasicAnimation

    在iOS中,图形可分为以下几个层次: 越上层,封装程度越高,动画实现越简洁越简单,但是自由度越低:反之亦然.本文着重介绍Core Animation层的基本动画实现方案. 在iOS中,展示动画可以类比 ...

    webpack4&colon; compilation&period;mainTemplate&period;applyPluginsWaterfall is not a function 解决方法

    今天捣鼓webpack4踩到一个弥天大坑:使用html-webpack-plugin打包html的时候一直报 compilation.mainTemplate.applyPluginsWaterfal ...

    Angular调用Asp&period;net Core JWT Authentication接口

    基本思路是调用登录接口,获取token,使用token请求其他JWT接口: getHomeDetails(): Observable { let headers ...

    更新Xcode10与iOS12 遇到的bug&colon;library not found for -lstdc&plus;&plus;&period;6&period;0&period;9

    更新Xcode10与iOS12 遇到的bug:library not found for -lstdc++.6.0.9 解决办法:删除pod里导入的库文件,跑一下pod,再重新导入这些库文件,跑pod ...

    Docker Compose demo 使用

    1.docker compose 安装 curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker- ...

    展开全文
  • poi删除带有合并单元格的行的问题

    万次阅读 2014-08-30 18:22:27
    在网上搜了很久关于poi删除带有合并单元格的行后,下面

    在网上搜了很久关于poi删除带有合并单元格的一行后,下面行数据向上移动一行时,出现乱合并的问题,看到有人提过这个问题,但是郁闷的很没有一个人回答过,而且大部分的文章都是关于什么合并单元格,读取Excel,写入Excel,真搞不懂,能来一个创新点的吗,唉!我出现的情况,如下图情况


    原模板文件:




    删除地11行带有合并单元格的行后,后面的数据上移,导致第12行上移后出现乱合并问题



    我现在只有这种方法:因为是读取模板,向模板中写入数据,即模板就会固定,则通过找到要操作的带有合并单元格的行,通过removeMergedRegion(int i)这个方法来移除合并单元格,移除和即对应的行没有合并单元格了,再将后面的数据上移sheet.shiftRows(lastRowNum-4,lastRowNum,-1),根据这个思路看下面的代码:


    public class PoiExcel {
    	public static void main(String[] args) {
    		try {
    			InputStream is = new FileInputStream("report.xls");
    			try {
    				HSSFWorkbook workbook = new HSSFWorkbook(is);//找到工作博
    				//获取sheet
    				HSSFSheet sheet = workbook.getSheetAt(0);//找到sheet
    				int lastRowNum = sheet.getLastRowNum();
    				HSSFRow row = null;
    				if(sheet.getRow(0)==null){
    					row = sheet.createRow(0);
    				}else{
    					row = sheet.getRow(0);
    				}
    				// 向模板中写入数据
    				HSSFCell cell = row.createCell(0);
    				cell.setCellValue("100000");
    				
    				if(sheet.getRow(10)==null){
    					row = sheet.createRow(10);
    				}else{
    					row = sheet.getRow(10);
    				}
    				
    				HSSFRow rows = sheet.getRow(lastRowNum-5);
    				rows.createCell(0).setCellValue("11111");
    				rows.createCell(1).setCellValue("9283");
    				rows.createCell(2).setCellValue("2222");
    				rows.createCell(3).setCellValue("5555");
    				rows.createCell(4).setCellValue("444");
    				//寻找指定的合并单元格,再移除
    				removeMergedRegion(sheet, lastRowNum-5, 1);
    				//再将后面的数据向上移动
    				sheet.shiftRows(lastRowNum-4,lastRowNum,-1);			
    				
    			OutputStream os = new FileOutputStream("D:/保费报表.xls");
    			workbook.write(os);//将内存的中excel写入到保费报表.xls中
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		} catch (FileNotFoundException e) {
    			
    			e.printStackTrace();
    		}
    		
    	}
    	
    	 public static void removeMergedRegion(HSSFSheet sheet,int row ,int column)  
         {  
    	      int sheetMergeCount = sheet.getNumMergedRegions();//获取所有的单元格 
    	      int index = 0;//用于保存要移除的那个单元格序号
    	      for (int i = 0; i < sheetMergeCount; i++) { 
    	       CellRangeAddress ca = sheet.getMergedRegion(i); //获取第i个单元格
    	       int firstColumn = ca.getFirstColumn();  
    	       int lastColumn = ca.getLastColumn();  
    	       int firstRow = ca.getFirstRow();  
    	       int lastRow = ca.getLastRow();  
    	       if(row >= firstRow && row <= lastRow)  
    	       {  
    	        if(column >= firstColumn && column <= lastColumn)  
    	        {  
    	           index = i;
    	        }  
    	       }  
    	      }
    	      sheet.removeMergedRegion(index);//移除合并单元格
         }  
    }
    

    删除后的结果:











    展开全文
  • java poi对Excel表格进行单元行删除

    千次阅读 2019-07-18 15:43:27
    java poi对Excel表格进行单元行删除 ...一般使用POI删除单元行有两种方法 一种只删除单元行中的内容,不删除单元行 即 sheet.remove(row); //sheet即取得的工作表,row表示要具体删除的行 这个方法...
  • poi操作excel之删除模版的合并行 如果在模版中有合并行,使用 sheet.shiftRows(开始行,结束行,移动行数); 删除行的话会报错。所以有了以下代码。得先删除原有的行合并才能做删除移动。 // 参数1:sheet、参数2:开始行...
  • POI处理excel(单元格赋值,读值)

    千次阅读 2018-09-29 17:35:55
    * 获取指定位置单元格的值 * 设置指定位置单元格的值 */ public class MyPOIUtils { public static Workbook workbook ; public static FileInputStream fileInputStream ; public static FileOutputStream...
  • 有什么方法可以向下移动特定单元格,并可以将行插入到特定区域中,如下所示:在给定的示例中,我想在region1中再添加一行(也保留所有旧行),它将变为:   region1: region2: newval newval A 1 John 2 B 2 ...
  • Java POI 对Excel合并单元格的数据处理 最近在项目开发过程中,有个一个导入Excel文件处理合并单元格数据的需求,就自己在网上找了一个模板,自己进行二次开发来开发需求。 Excel工具类 public class ExcelUtil { ...
  • poi移动列和删除

    千次阅读 2021-04-02 16:11:08
    Java poi 移动列 删除列移动列删除列最后 移动列 从poi4.0.0开始,在sheet里面提供了一个shiftColumns(int startColumn, int endColumn, final int n)api, 移动开始列、结束列和移动列数。 需要注意的是, 移动到...
  • Java使用原生的POI操作导出Excel, 合并单元格, 设置颜色, 合并单元格的性能问题.
  • poi word 删除表格

    千次阅读 2019-04-22 19:00:07
    poi 删除表格,docx 版 /** * 删除表格 * @param table 表格对象 */ public static void deleteTable(XWPFTable table){ List<XWPFTableRow> rows = table.getRows(); int rowLength = ...
  • 因为有个需求是根据自定义的单元格名字去获得单元格内容,网上翻了半天也没有找到有人写过比较完善的,所以只好看令人头疼的官方文档自己写了。 ...
  • 百度了半天没百度出来解决的问题,可能是poi技术就是不支持吧....首先这个模板里第一行是6个单元格 ,第二行第三行都是8个单元格 我们的业务是得到一个存放数据的列表,然后我拿到列表判断里面是有有值. 有的话我...
  • POI Word表格删除行removeRow()

    千次阅读 2021-04-27 20:53:53
    1 pom.xml(Maven依赖文件) <dependency>...org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <depend.
  • java使用poi操作excel删除一整行

    千次阅读 2021-02-21 16:05:08
    java使用poi操作excel删除一...从第5行开始到最后一行都向上移动1行,会把第四行覆盖掉,实现删除指定行的效果。 需求2:读取指定单元格数据(第5行第4列) 代码示例: Cell cell = sheet.getRow(4).getCell(3); 因为
  • //在queryDatePosition 指定的位置写入查询时间 sheet.getRow(queryDatePosition[0]).getCell(queryDatePosition[1]).setCellValue(queryDateSection); List,Object>> stpps = (List,Object>>)data.get(...
  • POI实战 .pdf

    2018-02-01 15:53:53
    1.POI入门 4 1.1 Excel基本知识 4 1.2 POI基本类 5 1.3 POI简单读取Excel数据 5 1.4 POI简单写出Excel 9 2.复杂读取 16 2.1 单元格各类型数据读取 16 2.1.1 基本类型 16 2.1.2 日期类型 18 2.2 自定义类型 21 3....
  • /** * 根据文档将所有段落都遍历一遍,找到对应标题的,讲其他元素删除,保留原有样式 * https://blog.csdn.net/qq_37201321/article/details/91864843 */ public class HelloWorld { public static void main...
  • 我需要有一个表格,其中第一行和第二行的单元格已合并.像这样:我一直在审查与该主题相关的所有问题,并且找到了将网格跨度应用于单元格的一些答案,但找不到真正的解决方案.这是我从google和本网站获得的示例中的代码...
  • 一般情况下,删除行时会面临两种情况:删除行内容但保留行位置、整行删除(删除后下方单元格上移)。对应的删除方法分别是:void removeRow(Rowrow)//Remove a row from this sheet. All cells contained in the row ...
  • POI操作EXCEL删除

    千次阅读 2019-01-10 09:05:47
    POI 操作表格删除行包含两种方法: 1. sheet.removeRow(Row row);(POI3.17 版本,试过POI3.8,有问题,POI4.0不支持java6与java7)  该方法主要用与清除行的内容,还保留行的位置  共用方法: /** * 从某行...
  • 但又不希望用户看到锁定ID数据:考虑到用户直接复制行导致隐藏列被复制,从而将新增的数据变成更新数据,将隐藏的列放在第一行并锁定则不能复制删与增行:由于导入的数据存在合并行,用户编辑时会用到删除与新增行...
  • 最近做的一个物流项目,其主要操作是处理上传和下载Excel文件的,主要用的第三方的Poi的jar包。前几天遇到个问题,纠结了好几天终于得以解决,现将过程记录下。作成结构相同的多sheet的Excel文件,其中根据业务要求...
  • 本文介绍在 Java程序中如何删除Word表格(即将整个Table表格删除)和删除Word表格内容(即删除表格中的数据内容,这里也可以根据需要实现删除表格样式,表格单元格中的段落等)的方法。使用工具:Free Spire.Doc for ...
  • 使用poi增加word行和列填充数据、合并单元格
  • 写的过程中才发现poi的数据验证居然只能添加不能修改和删除,那我也就只能自己写修改和删除了;这里把我用到的方法整理了一下。 突然发现代码有些多,这里说一下思路,修改数据验证就是用反...
  • 1.java POI操作Excel HSSFSheet新增行在excel中点击右键-插入,就直接插入一行了,可是用java 网上方法都搞得很难,其实也是炒鸡简单的。HSSFWorkbookworkbook=newHSSFWorkbook(inputStream);HSSFSheetsheet=...
  • POI 4.1.2 操作 Excel

    2020-06-19 11:27:32
    POI 4.1.2 操作 Excel 1. POI 简介 POI(Poor Obfuscation Implementation),直译为“可怜的模糊实现”,利用POI接口可以通过 Java 操作 Microsoft office 套件工具的读写功能。POI支持office的所有版本。 POI 的 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,431
精华内容 572
关键字:

poi删除指定单元格