找到A列的最后一行,并使用win32com模块Python填充它下面的单元格

2024-04-20 10:16:55 发布

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

我试图找到A列中的最后一行,并使用“fill series”格式填充最后一行下面的单元格。我的代码如下所示。你知道吗

这里有几个注释 1) 在对源范围和填充范围进行寻址之前,将对工作表进行分组选择 2) 列数据类型可能因工作表而异,但当我指定确切的范围时,填充序列格式可以工作

import win32com.client as win32

excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
wb = excel.Workbooks.Open ('D:\\Data Str\\Test Files\\Book1.xls')
ws = wb.Worksheets(['Sheet1','Sheet2'])
ws.Select()
for sheet in ws:
       lastRow = sheet.UsedRange.Rows.Count
       print (lastRow)
       sourceRange = sheet.Range("A") & lastRow
       fillRange = sheet.Range("A") & lastRow + 1
       sourceRange.AutoFill(fillRange, win32.constants.xlFillSeries)

代码在sourceRange变量前按预期运行,我得到以下错误。你知道吗

com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146827284), None)

我的预期输出和示例数据集如下表所示。两列分别对应于表1和表2的A列。你知道吗

Key (Sheet1)    Date (Sheet 2)
1               01/11/2019
2               02/11/2019
3               03/11/2019
4               04/11/2019
5               05/11/2019
6               06/11/2019
7               07/11/2019
8               08/11/2019
9               09/11/2019
10              10/11/2019
11              11/11/2019

Expected Result

Key (Sheet1)    Date (Sheet 2)
1               01/11/2019
2               02/11/2019
3               03/11/2019
4               04/11/2019
5               05/11/2019
6               06/11/2019
7               07/11/2019
8               08/11/2019
9               09/11/2019
10              10/11/2019
11              11/11/2019
12              12/11/2019

Tags: key代码nonedatews格式rangeexcel
1条回答
网友
1楼 · 发布于 2024-04-20 10:16:55

问题似乎是我没有正确地引用和定义分组工作表中单元格的范围。请查看我的代码上的注释(#):

import win32com.client as win32

excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
wb = excel.Workbooks.Open ('D:\\Data Str\\Test Files\\Book1.xls')
ws = wb.Worksheets(['Sheet1','Sheet2'])
ws.Select()
for sheet in ws:
       lastRow = sheet.UsedRange.Rows.Count 
       print (lastRow)
       nRow = lastRow + 1  # In case of different row length, save last row in nRow variable
       sourceRange = sheet.Range("A1" , sheet.Cells(lastRow,1)) 
# Use comma separation and sheet.cells function to define the ending point of Range class method.
       fillRange = sheet.Range("A1" , sheet.Cells(nRow ,1))
       sourceRange.AutoFill(fillRange, win32.constants.xlFillSeries)

相关问题 更多 >