0

我有3个参数。

startLine、starColumn 和宽度(此处为 2、8、3)

擅长

如何擦除所选区域而不在每个单元格中写入空白?(这里只有 30 行,但可能有 10 000 行)

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

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()

ps:代码有效,由于复制/传递错误,我可能忘记了某些部分,实际上,excel文件的处理是由几个相互继承的类管理的

谢谢

4

2 回答 2

1

我通常做的是在 Excel 中记录宏,而不是尝试在 Python 中重新破解 VB。对于删除内容,我得到了这样的东西,将其转换为 Python 应该不难:

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

在 Python 中,它应该类似于:

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

工作示例:

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()
于 2013-03-08T14:14:37.253 回答
0

这对我有用

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

ws.Range("A12:B20").ClearContents()
于 2018-01-09T16:50:08.620 回答