怎么用java的poi的工具包删除指定的单元格内容?(大神来看下吧,我只有10分了,太少,只求有人帮个忙)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用java的poi的工具包删除指定的单元格内容?(大神来看下吧,我只有10分了,太少,只求有人帮个忙)相关的知识,希望对你有一定的参考价值。

我现在可得到4个参数,
1,exfile --excel的文件
2,,sheet--excel指定的sheet
3,x-----单元格所在行
4,单元格所在列。
我现在要删除指定sheet的指定单元格
如:要删除一个sheet的第4行第7列,怎么删除?
不是单元格置空(当删除时使下面的单元格上移,不能保留空单元格)

在sheet对象里有删除行的方法。removeRow.

删除列的话,还是建议你用循环去处理。比如说,你在每一行getCell()的时候,跳过这个cell。追答

列你可以用循环删除每一行相应的cell啊

追问

但是removeRow.只有行吧?getcell后没有remove方法了,

还是没搞清楚怎么彻底删除单元格。
你有测试过的代码么,谢谢了

追答

一般来讲,你读取了之后,删除,要重新写到文件里的吧。就你在getCell的时候,跳过那个Cell就行了。

追问

sheet.removeRow(sheet.getRow(short)i))
这是行吧,指定到行的列呢?
后面接getcell不能用
sheet.removeRow是无返回值的

追答 /**
 * 删除列
 * @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 < row + 1; i++) 
int totalCol = hb.getSheetAt(0).getRow(i).getLastCellNum();
HSSFRow hr = hs.getRow(i);
for (int j = 0; j < totalCol; j++) 
if (col == j) // 表示要删除的行
//移除当前列,把后面的列前移
for (int k = j; k < totalCol; 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) 方法。这个方法的原理也是把下面的行住上面移,覆盖了你要删除的行。   

参考技术A 建议你在网上搜pageoffice的示例代码。看看追问

我用是poi

以上是关于怎么用java的poi的工具包删除指定的单元格内容?(大神来看下吧,我只有10分了,太少,只求有人帮个忙)的主要内容,如果未能解决你的问题,请参考以下文章

vba中怎么用代码将单元格内容转换为文本类型?

Excel单元格内容包含指定单元格内容时,如何把“指定单元格2”复制到“单元格1”后面?

java poi 一个单元格写如多行数据

java poi怎么读取Excel中合并单元格的值?

java poi怎么读取Excel中合并单元格的值?

用java poi包读取Excel单元格