Python:根据先前单元格中的公式自动填充 Excel 中的单元格
Python: Autofill cells in Excel according to a formula in previous cells
使用 Python 和 win32com:
我在 Excel 文件的单元格 A5:A54 中有一个公式。我正在尝试根据相同的公式用值填充单元格 A55:A61。我在网上搜索了一下,发现了这个:
http://pythonexcels.com/python-excel-mini-cookbook/
引自link:
"This script uses Excel’s autofill capability to examine data in cells A1 and A2, then autofill the remaining column of cells through A10." 来自 link 的代码:
#
# Autofill cell contents
#
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Add()
ws = wb.Worksheets("Sheet1")
ws.Range("A1").Value = 1
ws.Range("A2").Value = 2
ws.Range("A1:A2").AutoFill(ws.Range("A1:A10"),win32.constants.xlFillDefault)
wb.SaveAs('autofill_cells.xlsx')
excel.Application.Quit()
所以我在我的代码中试了一下:
from win32com.client import Dispatch
from win32com.client import constants
import os
from Tkinter import Tk
from tkFileDialog import askopenfilename
import win32com.client as win32
xlApp = Dispatch("Excel.Application")
...
print "Choose the excel file that you want to copy the data to"
Tk().withdraw()
filename_to = askopenfilename()
xlBook_to = xlApp.Workbooks.Open(filename_to)
xlApp.Visible=1
xlSheet_to_final = xlBook_to.Sheets(1)
xlBook_to.Activate()
xlSheet_to_final.Range("A53:A54").Select()
xlSheet_to_final.Range("A53:A54").AutoFill(xlSheet_to_final.Range("A55:A61"),win32.constants.xlFillDefault)
我得到这个错误:
File "C:\Users\<user>\excel_test.py", line 74, in <module>
xlSheet_to_final.Range("A53:A54").AutoFill(xlSheet_to_final.Range("A55:A61"),win32.constants.xlFillDefault)
File "C:\Python27\Lib\site-packages\win32com\gen_py[=14=]020813-0000-0000-C000-000000000046x0x1x8\Range.py", line 66, in AutoFill
, Type)
File "C:\Python27\Lib\site-packages\win32com\client\__init__.py", line 459, in _ApplyTypes_
self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u'AutoFill method of Range class failed', u'xlmain11.chm', 0, -2146827284), None)
我该如何解决?如何将前面单元格的公式应用到后面的单元格?
尝试
from win32com.constants import xlFillDefault
....
xlSheet_to_final.Range("A53:A54").AutoFill(xlSheet_to_final.Range("A53:A61"), xlFillDefault)
使用 Python 和 win32com:
我在 Excel 文件的单元格 A5:A54 中有一个公式。我正在尝试根据相同的公式用值填充单元格 A55:A61。我在网上搜索了一下,发现了这个: http://pythonexcels.com/python-excel-mini-cookbook/
引自link: "This script uses Excel’s autofill capability to examine data in cells A1 and A2, then autofill the remaining column of cells through A10." 来自 link 的代码:
#
# Autofill cell contents
#
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Add()
ws = wb.Worksheets("Sheet1")
ws.Range("A1").Value = 1
ws.Range("A2").Value = 2
ws.Range("A1:A2").AutoFill(ws.Range("A1:A10"),win32.constants.xlFillDefault)
wb.SaveAs('autofill_cells.xlsx')
excel.Application.Quit()
所以我在我的代码中试了一下:
from win32com.client import Dispatch
from win32com.client import constants
import os
from Tkinter import Tk
from tkFileDialog import askopenfilename
import win32com.client as win32
xlApp = Dispatch("Excel.Application")
...
print "Choose the excel file that you want to copy the data to"
Tk().withdraw()
filename_to = askopenfilename()
xlBook_to = xlApp.Workbooks.Open(filename_to)
xlApp.Visible=1
xlSheet_to_final = xlBook_to.Sheets(1)
xlBook_to.Activate()
xlSheet_to_final.Range("A53:A54").Select()
xlSheet_to_final.Range("A53:A54").AutoFill(xlSheet_to_final.Range("A55:A61"),win32.constants.xlFillDefault)
我得到这个错误:
File "C:\Users\<user>\excel_test.py", line 74, in <module>
xlSheet_to_final.Range("A53:A54").AutoFill(xlSheet_to_final.Range("A55:A61"),win32.constants.xlFillDefault)
File "C:\Python27\Lib\site-packages\win32com\gen_py[=14=]020813-0000-0000-C000-000000000046x0x1x8\Range.py", line 66, in AutoFill
, Type)
File "C:\Python27\Lib\site-packages\win32com\client\__init__.py", line 459, in _ApplyTypes_
self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u'AutoFill method of Range class failed', u'xlmain11.chm', 0, -2146827284), None)
我该如何解决?如何将前面单元格的公式应用到后面的单元格?
尝试
from win32com.constants import xlFillDefault
....
xlSheet_to_final.Range("A53:A54").AutoFill(xlSheet_to_final.Range("A53:A61"), xlFillDefault)