python删除多个sheet指定列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python删除多个sheet指定列?相关的知识,希望对你有一定的参考价值。

具体需求是这样的:F:\test.xlsx里面有sheet1,sheet2,sheet3,sheet4,sheet5...多个表,要删除每个表中的第 3,4,6列,请问怎么实现?

个人用感觉xlwings比较好,直接改~
import xlwings as xw

app = xw.App(visible=False, add_book=False) # 不打开excel
wb = app.books.open('F:\\test007.xlsx')
for i in range(0, 5):
ws = wb.sheets[i]
ws.api.columns(3).delete
ws.api.columns(3).delete # 原列4
ws.api.columns(4).delete # 原列6
wb.save()#不缩进
wb.close()#不缩进
参考技术A 一般的库都只支持读取或者创建文件,不支持修改,所以比较可靠的是读文件,筛选数据,另存
具体库可以选openpyxl,或者pandas
参考技术B 个人用感觉xlwings比较好,直接改~
import xlwings as xw

app = xw.App(visible=False, add_book=False) # 不打开excel
wb = app.books.open('F:\\test007.xlsx')
for i in range(0, 5):
ws = wb.sheets[i]
ws.api.columns(3).delete
ws.api.columns(3).delete # 原列4
ws.api.columns(4).delete # 原列6
wb.save()#不缩进
wb.close()#不缩进

怎么用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

以上是关于python删除多个sheet指定列?的主要内容,如果未能解决你的问题,请参考以下文章

指定从第几行读取列表python

python读取excel表

小练习-excel删除乱码?加一列

新手学习python读 / 修改 / 导出excel

100天精通Python——第41天:自动化操作Excel(xlrd和xlwt)文末送书三本

5 分钟掌握 openpyxl 操作:Python 轻松处理 Excel