0

私は3つのパラメーターを持っています。

startLine、starColumn、およびwidth(ここでは2,8,3)

優れている

各セルに空白を書き込まずに、選択した領域を消去するにはどうすればよいですか?(ここでは30行しかありませんが、潜在的に10000行になる可能性があります)

現在、行数を数えていますが、エリアを選択して削除する方法を見つけることができません。

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 に答える