怎么用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列,怎么删除?
不是单元格置空(当删除时使下面的单元格上移,不能保留空单元格)
删除列的话,还是建议你用循环去处理。比如说,你在每一行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) 方法。这个方法的原理也是把下面的行住上面移,覆盖了你要删除的行。
我用是poi
以上是关于怎么用java的poi的工具包删除指定的单元格内容?(大神来看下吧,我只有10分了,太少,只求有人帮个忙)的主要内容,如果未能解决你的问题,请参考以下文章