用win32com和python只删除excel的一部分

2024-10-01 13:38:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个参数。在

startine、starColumn和width(这里是2、8、3)

excel

如何删除选定区域而不在每个单元格中写入空白? (这里只有30条线路,但可能有1万条线路)

现在我正在成功地计算行数,但我无法找到如何选择和删除一个区域

self.startLine = 2
self.startColumn = 8
self.width = 8

self.xl = client.Dispatch("Excel.Application")
self.xl.Visible = 1
self.xl.ScreenUpdating = False
self.worksheet = self.xl.Workbooks.Open("c:\test.xls")
sheet = self.xl.Sheets("data")

#Count the number of line of the record
nb = 0
while sheet.Cells(start_line + nb, self.startColumn).Value is not None:
    nb += 1

#must select from StartLine,startColumn to startcolum+width,nb
#and then erase

self.worksheet.Save()

注:代码工作正常,我可能忘记了一些部分由于做copy/pas错误,实际上excel文件的处理是由几个相互继承的类来管理的

谢谢


Tags: oftheself区域参数linewidth线路
2条回答

这对我有用

xl = EnsureDispatch('Excel.Application') 
wb2=xl.Workbooks.Open(file)
ws=wb2.Worksheets("data")

ws.Range("A12:B20").ClearContents()

我通常做的是在Excel中记录宏,然后尝试用Python重新编写VB。对于删除内容,我得到这样的东西,应该不难转换成Python:

Range("H5:J26").Select
Selection.ClearContents

在Python中,它应该类似于:

^{pr2}$

工作示例:

from win32com.client.gencache import EnsureDispatch

exc = EnsureDispatch("Excel.Application")
exc.Visible = 1
exc.Workbooks.Open(r"f:\Python\Examples\test.xls")
exc.Sheets("data").Select()
exc.Range("H5:J26").Select()
exc.Selection.ClearContents()

相关问题 更多 >