Fab*_*tti 5 python excel openpyxl
我正在使用以下代码在python 3.6,Excel 2016中打开现有的Excel文件:
Shnm = my_pyx.get_sheet_names()
sheet = my_pyx.get_sheet_by_name(Shnm[0])
from openpyxl import load_workbook
# Class to manage excel data with openpyxl.
class Copy_excel:
def __init__(self,src):
self.wb = load_workbook(src)
self.ws = self.wb.get_sheet_by_name(sheet)
self.dest="destination.xlsx"
# Write the value in the cell defined by row_dest+column_dest
def write_workbook(self,row_dest,column_dest,value):
c = self.ws.cell(row = row_dest, column = column_dest)
c.value = value
# Save excel file
def save_excel(self) :
self.wb.save(self.dest)
Run Code Online (Sandbox Code Playgroud)
因此,当我这样做时:
row_dest=2
column_dest=6
workbook = Copy_excel(my_file)
data=60
workbook.write_workbook(2,6,data )
workbook.save_excel()
Run Code Online (Sandbox Code Playgroud)
其中:my_file是类似于filename.xlsxstr的表,而sheet是具有工作表名称的str。
出现错误,指出所提到的工作表名称不存在,这使我很烦。
我也尝试替换:
self.ws = self.wb.get_sheet_by_name(sheet)
与
self.ws = self.wb[sheet]
Run Code Online (Sandbox Code Playgroud)
但我仍然收到相同的错误。
问题是设置:
sheet = my_pyx.get_sheet_by_name(Shnm[0])
Run Code Online (Sandbox Code Playgroud)
然后设置:
self.ws = self.wb[sheet]
Run Code Online (Sandbox Code Playgroud)
由于工作表不是工作表名称,而是实际的工作表对象,因此您应该使用:
self.ws = self.wb[Shnm[0]]
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这段代码,它对我有用:
from openpyxl import load_workbook
# Class to manage excel data with openpyxl.
class Copy_excel:
def __init__(self,src):
self.wb = load_workbook(src)
Shnm = self.wb.sheetnames
self.ws = self.wb[Shnm[0]]
self.ws = self.wb[sheet]
self.dest='path\\to\\Copy.xlsx'
# Write the value in the cell defined by row_dest+column_dest
def write_workbook(self,row_dest,column_dest,value):
c = self.ws.cell(row = row_dest, column = column_dest)
c.value = value
# Save excel file
def save_excel(self) :
self.wb.save(self.dest)
row_dest=2
column_dest=6
workbook = Copy_excel('path\\to\\file.xlsx')
data=60
workbook.write_workbook(2,6,data )
workbook.save_excel()
Run Code Online (Sandbox Code Playgroud)